一,作用域
a = 1
def add(y,z):
print y+z+a
return
1,全局变量
a因为全局变量是在文件最外层注册的变量名,所以是全局变量,他能够在函数内部进行‘引用’,而不需要特定的声明
为全局变量
全局变量的生命周期在这个程序运行期间,在整个脚本中作用
2,局部变量(本地变量)
y和z的注册地址在函数内部,y和z是局部变量
局部变量生命周期在函数运行期间,只在局部的区域作用
例子:
外部的a并没有被修改,这是因为,赋值的变量名除非声明为全局变量,否则均为本地变量,这里的a=2,
因为是在函数内部使用赋值的,所以python的解释器会把它当作一个函数内部的变量,他的作用域使这个函数的内部
如果想要修改一个全局变量,只需子啊函数内部被修改变量前加global语句:
eg:
二,函数的传参需要注意的地方
函数参数传递当接到一个可变对象(如列表,字典,集合)是,我们可以直接修改初始对象的数据值,这就是传引用
不可变对象传递时,我们无法直接修改初始数据对象的值,也叫按值传递
1,传递一个不可变对象(按值传递字符串,元组等):
eg::
这个不会改变实参的值(a)
2,传递一个可变的对象(按引用传递)
eg:
这个会改变实参的值,因为这里隐含了一个浅拷贝的操作