六角括号在word里怎么打 小括号怎么打( 二 )
1.6.6 列表推导产生的变量泄漏问题
python2
>>> x = 'my precious'>>> dummy =
python3
>>> x = 'my precious'>>> dummy =
python2中,在列表推导中同名变量的赋值可能会影响上下文环境;而在python3中,都有自己的局部作用域 。使用生成器则不会出现这种变量泄漏的问题 。
1.6.7 import
python2默认是按照相对路径导入模块和包,python3默认则是按照绝对路径导入 。
python2引入一个module时会先在当前目录搜索,然后再去搜索路径(sys.path)搜索;而python3直接在搜索路径搜索,为了导入,使用显式路径导入 。
Python2.x 缺省为相对路径导入,Python3.x 缺省为绝对路径导入 。绝对导入可以避免导入子包覆盖掉标准库模块(由于名字相同,发生冲突) 。如果在 Python2.x 中要默认使用绝对导入,可以在文件开头加入如下语句:
from __future__ import absolute_import
这句 import 并不是指将所有的导入视为绝对导入,而是指禁用 implicit relative import(隐式相对导入), 但并不会禁掉 explicit relative import(显示相对导入) 。
from .foo import Foo#python2、3都适用from .bar import Bar#python2、3都适用#from mdl.foo import Foo#python2、3都适用#from mdl.bar import Bar#python2、3都适用#from foo import Foo#python3不适用#from bar import Bar#python3不适用
1.6.8 Exception
py2 : except exc, var
py3 : except exc as var,使用 as 作为关键词
1.6.9 不等运算符
Python 2.x中不等于有两种写法 != 和 <>
Python 3.x中去掉了<>, 只有!=一种写法
1.6.10 dict方法
py2中dict的keys()、items()、values() 是列表,iteritems()返回迭代器
py3中dict的keys()、items()、values() 是类或迭代器,非基础数据类型,执行json的加解密时,需要注意
py3中iteritems() 和 viewitems() 这两个方法都已经废除了,而items()得到的结果是和py2里面viewitems()一致的 。在py3里用items()替换iteritems() ,可以用于for来循环遍历
1.6.11 数据类型
在Python2中long是比int取值范围更大的整数,Python3中取消了long类型,int的取值范围扩大到之前的long类型范围 。
python3版本中增加了bytes类型
1.6.12 重载
当我们想对python中原有的模块进行覆盖,又不希望退出当前的程序,就需要用到重载的概念
# python2 内置函数reload(module)# python3 from importlib import reloadreload(module)
1.7 项目依赖库安装
pip freeze > requirements.txt 导出项目的依赖 。pip install -r requirements.txt 在项目中一次性安装依赖
1.8 用venv 配置不同的开发环境
pip install virtualenv进入到项目目录,执行virtualenv --no-site-packages venv(虚拟环境到名字) no-site-packages意思是不复制系统到安装包,得到的是纯净的环境激活虚拟环境 source venv/bin/activate 。进入了venv环境,pip包时只安装到该环境下,系统python环境不受任何影响(windows系统venv\Scripts\activate),激活后Python 解释器的路径就被添加进PATH 中 。退出虚拟环境 deactivate,回到系统python环境
python3内置了用于创建虚拟环境的venv,可直接使用python3 -m venv .venv(Linux下)
py -3 -m venv .venv
virtualenv --python=/usr/local/bin/python3 env3 #创建指定python版本的虚拟环境 --python 指定python解释器
1.9.代码风格
折叠长行的首选方法是在小括号,中括号,大括号中使用Python隐式换行 。长行可以在表达式外面使用小括号来变成多行 。连续行使用反斜杠更好 。和None比较用is缩进使用4个空格,而不要用tab不要在for和while后面用else为变量赋值时,赋值符号的左右侧应该各自写上一个空格 。文件中的函数和类之间应该用两个空行隔开 。在同一个类中,各方法之间应该用一个空行隔开 。
1.10.新式类和旧式类
python2中既有新式类又有旧式类,并且默认为经典类,只有显示继承object才是新式类 。
class a(Object):pass#新式类写法class a():pass#经典类(旧式类)写法class a:pass#经典类写法类.mro()#查看解析顺序列表,只有新式类有该属性 。----------------------------------------------------------------------class a():passc=a()print dir(c)---------------------------------out<'__doc__', '__module__'>class a(object):passc=a()print dir(c)-------------------------------out<'__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'>*:在编写python类时,尽量使用新式类,其包含更多属性 。
- 防晒喷雾喷在丝袜上有用吗
- etc余额不足让通行吗
- 明日方舟怎么在电脑上玩 明日方舟如何在电脑上玩
- 三国杀怎么改名字 三国杀改名字的方法
- emmm表情包什么意思
- 再会花开人难常在什么意思
- 中国有几大名山分别在哪里
- 泰勒科学管理思想中对人的研究仅仅存在于什么的范畴
- 野外迷路如何判断方向和求救
- 内衣80a和80b有什么区别
