(1)可变参数类型作为函数参数默认值,函数参数默认值的设置在Python中只会被执行一次,也就是定义该函数的时候。
解决办法,设置为None,然后判断
(2)Python中的变量名解析遵循所谓的LEGB原则,也就是“L:本地作用域;E:上一层结构中def或lambda的本地作用域;G:全局作用域;B:内置作用域”(Local,Enclosing,Global,Builtin),按顺序查找。
上述错误的出现,是因为当你在某个作用域内为变量赋值时,该变量被Python解释器自动视作该作用域的本地变量,并会取代任何上一层作用域中相同名称的变量。
(3)复制、浅拷贝、深拷贝
复制:直接赋值,传递对象的引用而已,原始对象改变,被赋值的对象也会做相同的改变
浅拷贝(切片操作、工厂函数、copy函数):没有拷贝子对象,所以原始数据改变,子对象会改变
深拷贝:包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
(4)模块依赖。
a.py文件中的代码:
1
2
3
4
|
import b def f(): return b.x print f() |
b.py文件中的代码:
1
2
3
4
|
import a x = 1 def g(): print a.f() |
import a不会有问题,但是import b就会有问题了
# module_x.py
def
inc_count():
import
module_y
module_y.count
+
=
1