一.Python3 简介及入门

 

 

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

  • Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python特点

  • 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

  • 2.易于阅读:Python代码定义的更清晰。

  • 3.易于维护:Python的成功在于它的源代码是相当容易维护的。

  • 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

  • 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

  • 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

  • 7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

  • 8.数据库:Python提供所有主要的商业数据库的接口。

  • 9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。

  • 10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

Python与其他语言比较

  • C 和 Python、Java、C#等

  C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

  其他语言: 代码编译得到字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

  • Python 和 C(Python这门语言是由C开发而来)

  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.

  对于速度:Python的运行速度相较与C相比,绝逼是慢了

  • Python 和 Java、C#等

  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持

  对于速度:Python在速度上可能稍显逊色

所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。

Python解释器的种类

  • CPython

        当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

  • IPython

    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

  • Jyhton

        Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

  • IronPython

        IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

  • PyPy(特殊)

        PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

     绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

    • RubyPython、Brython ...

PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!

Python2.x与Python3.x版本区别

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

Python2.x与3​​.x版本区别 

查看Python版本

python -V

 

Python 入门

第一句Python代码和Python解释器

在 /home/dev/ 目录下创建 hello.py 文件,内容如下:

print "hello,world"

  

执行 hello.py 文件,即: python /home/dev/hello.py

python内部执行过程如下:

把代码加载到内存中->词法分析->语法分析->编译生成字节码->执行字节码生成机器码为CPU可识别并执行

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。(任何字节码通过反编译都可以得到代码)

上一步中执行 python /home/dev/hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python
  
print "hello,world"

  

如此一来,执行: ./hello.py 即可。

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

Python编码

Python解释器在加载 .py 文件中的代码时,会对内容进行编码(Python2.7默认编码为ASCII,Python3.5默认编码为UTF-8)

ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多。

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码,如果如下代码用python2解释器的话会报错。

ASCII码无法表示中文

#!/usr/bin/env python
  
print "你好,世界"

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
  
print "你好,世界"

  

注:因为Python3.5默认编码为UTF-8,所以可不用告诉Python3.5解释器使用什么编码也能解释中文。

Python基础之字符编码:

python基础之字符编码 - linhaifeng - 博客园
http://www.cnblogs.com/linhaifeng/articles/5950339.html

python 之路,致那些年,我们依然没搞明白的编码 - 金角大王 - 博客园
http://www.cnblogs.com/alex3714/articles/7550940.html

字符串和编码 - 运维研发 - 博客园
http://www.cnblogs.com/rick52o/p/7198886.html

Unicode 和 UTF-8 有何区别? - 知乎
https://www.zhihu.com/question/23374078

 

Python注释

Python中单行注释采用 # 开头

Python中多行注释使用三个单引号(''')或三个双引号(""")

Python字符串

  • python中单引号和双引号使用完全相同。
  • 使用三引号('''或""")可以指定一个多行字符串。
  • 转义符 '\'
  • 自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
  • 字符串是不可变的。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。

Python多行语句

Python语句中一般以新行作为为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

total = item_one + \
        item_two + \
        item_three

语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
import sys
 
print(sys.argv)

pyc 文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

Python变量和关键字

1、声明变量

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
  
name = "wupeiqi"

  

上述代码声明了一个变量,变量名为: name,变量name的值为:"wupeiqi"

变量的作用:昵称,其代指内存里某个地址中保存的内容

变量定义的规则:

  • 变量名的第一个字符必须是字母或下划线'_'
  • 变量名的其他的部分由字母、数字和下划线组成
  • 变量名对大小写敏感
  • 以下关键字不能声明为变量名
    Python2.7中:['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

          Python3.5中:['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

          Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字: 

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

2、变量的赋值

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

name1 = "wupeiqi"
name2 = "alex"

  

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

name1 = "wupeiqi"
name2 = name1

  

获取用户输入

Python2有两个全局函数,用来在命令行请求用户输入。第一个叫做input(),它等待用户输入一个Python表达式(然后返回结果)。第二个叫做raw_input()用户输入什么它就返回什么。这让初学者非常困惑,并且这被广泛地看作是Python语言的一个“肉赘”(wart)。Python 3通过重命名raw_input()为input(),从而切掉了这个肉赘,所以现在的input()就像每个人最初期待的那样工作。

执行下面的程序在按回车键后就会等待用户输入:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
input("\n\n按下 enter 键后退出。")

  以上代码中 ,"\n\n"在结果输出前会输出两个新的空行。一旦用户按下键时,程序将退出。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
# 将用户输入的内容赋值给 name 变量
name = input("请输入用户名:")
 
# 打印输入的内容
print(name)

  输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

 

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
  
import getpass
  
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
  
# 打印输入的内容
print(pwd)

  

 

行和缩进

Python最具特色的就是使用缩进来表示代码块,不需要使用大括号({})。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

 

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构

记住:空行也是程序代码的一部分。

同一行显示多条语句

 Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

 

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
import time;print('time:');print(time.time())

  

import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

  • 将整个模块(somemodule)导入,格式为: import somemodule
  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction
  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
  • 将某个模块中的全部函数导入,格式为: from somemodule import *

导入 sys 模块

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
import sys
print('================Python import mode==========================');
print ('命令行参数为:')
for i in sys.argv:
    print (i)
print ('\n Python 路径为',sys.path)

  

导入 sys 模块的 argv,path 成员

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
 
from sys import argv, path  # 导入特定的成员
 
print('================python from import===================================')
print('path:', path)  # 因为已经导入path成员,所以此处引用时不需要加sys.path

流程控制

1、if...else 和 if....elif...elif..........else

2、while循环

  • 原理:当条件为真时循环体执行,当条件为假时循环体不执行

3、for循环

for循环讲解

4、break和continue

  • break

break语句用在while和for循环中,用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
嵌套循环中,break语句将停止执行最深层的循环,并开始执行下一行代码。

  

  • continue

continue语句用在while和for循环中,用来跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。

 

posted @ 2018-02-27 15:08  Cslc-DaweiJ  阅读(1352)  评论(0编辑  收藏  举报