1、使用import *:
form itertools import *
count()
使用“import *”会和带有变量的命名空间重合,使程序报错,建议需要使用什么接口就import相关接口:
from itertools import count
count()
2、依赖结构项目的特定目录:
from nearby_module import awesome_function
def main():
awesome_function()
if __name__ == '__main__'
main()
如果你的python代码在很多的不同目录中,这样会不太利于接口的调用,幸好python支持目录索引的方式,所以建议你将需要调用的接口打包到一个相同功能的目录下:
from xxpackage.nearby_module import awesome_function
def main():
awesome_function()
if __name__ == '__main__'
main()
3、很多人认为python不用编译的:
def function():
#DO SOMETHING
但事实是在.py文件边上有一些.pyc文件或者在__pycache__目录中,这些都是编译好的python文件,python确实是解释性语言,它的编译结果是字节码,而不是机器码。通过解释字节码运行代码。
4、不需要遵循PEP8:
def function():
x = (1, 2)
y = 5
l = [1, 2, 3]
def func(x = 5)
#DO SOMETHING
PEP8规则链接
PEP8只是一个规则,就算不遵守也不影响代码的运行。估计身边会有人让你遵守这个规则,但我觉得只要不是公司规定的,随他去吧,自己开心就好。
5、用python2做任何事情:
def function():
x = 10000000000000
print(x in range(2 * x))
d = {"a": 1, "b": 2, "c": 3}
keys = d.keys()
del d["a"]
print("a" in keys)
目前python3已经出现很久了,但是可能你的代码中还有大量的python2,这个时候迁移的工作量会很大,所以python2目前还是有一定的保有量在使用的。当然新项目肯定是使用python3了,python3新增了很多新特性。对于python2,上面的代码中x这么大,后面的range居然还能执行。还有就是keys的变化,不再是一个copy,它仅仅是一个view。所以最后我想说,python3的变化是前所未有的,但是老项目用python2也很难直接签到python3