1.python版本间的差异:
2.x与3.x版本对比
| version | 2.x | 3.x |
| print " "或者print()打印都可以正常输出 |
只能print()这种形式打印,否则会出现 SyntaxError |
|
|
input raw_inut |
input:输出原生的数据类型,输入什么类型的值,就输出什么类型 raw_input:全部以字符串形式输出 |
3.x取消了raw_input方法,只能使用input() 方式提示输入字符串, 该方法和2.x版本的raw_input() 如果想要实现与2.x input()输出原生数据类型的值, 可以使用eval(input()) |
| class | 2.x支持新式类,和经典类,使用新式类时,类继承顺序会影响最终继承的结果 | 必须使用新式类,解决了类间继承顺序问题 |
| / | 例如:1/2,2.x输出的值为0 | 例如:1/2 3.x输出的值为0.5 |
2.python数据类型
int 整型,如1,123,1234,-1,-123...,范围在-2**31~2**31-1之间,取决于操作系统,不会小于这个范围。
float 浮点型,如1.1,1.12,-1.1,-1.12...
str 字符串,如'hello','123','abc'...字符串需要使用单引号或者双引号引起来。
bool 布尔类型,只有两个值,真:True,假:False,任何非零的数据类型,结果都为真,结果为0时,则为False。
long 这个类型只存在2.x版本,取值范围无限大,取决于可用的虚拟内存。
complex 复数,如3.12j,2.45e-6j...
元组(tuple) 如(‘1’,‘abc’,'hello')。
列表(list) 如['a','abc','python']。
字典(dict) 如{'name':'tom', 'age':'20', 'job':'IT'}。
3.python编码
python 2.x版本默认string字符编码,1个字符只能存8bit,可以使用内置函数,chr()和ord()进行字符转换。
python 3.x版本默认使用unicode编码格式,可以使用内置函数unichr()和ord()进行字符转换。
4.python命名规范
python变量名(标识符)只能以字母或下划线开头,且不能包含特殊字符,注意python保留关键字不能当作变量名,这样等于重写python的内置方法,可能会影响其他方法的调用,具体python保留字,见4.1小节内容。
为了书写规范,建议变量名使用统一的风格书写,例如:驼峰是 TestLoginSucess 或者test_login_success。
单个前导下划线开头的标识符,意味着约定为私有的。
两个前导下划线开头的标识符,表示强烈专用的标识符。
如果标识符还有两个下划线结束,则该标识符是语言的特殊名称。
另外需要说明的是Python是动态预先,也即是说在定义变量的时候不用指定变量的的数据类型,Python会在个变量赋值的时候自动改变变量的数据类型。
4.1python保留字
#通过导入keyword模块,我们可以查看当前python保留了哪些关键字 import keyword #查看python保留关键字 keyword.kwlist #2.x输出['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'] #3.x输出['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'] #注意,3.x新增了['False','None','True','nonlocal']同时去除了2.x ['exec']的关键字,大家在命名规范时,应该遵循3.x的关键字,便于向后兼容 #如果不确定该变量命名是否为关键字,也可以通过下面这种方法,检查是否为关键字 keyword.iskeyword('name') #返回False,则说明该变量不是系统保留关键字,即可用