关于参数(上)
变量的作用域:
1、变量有全局变量和局部变量之分
def increase_one(n):
n += 1
return n
n = 1 #此处的变量"n"属于全局变量
print(increase_one(n)) #此处的n,属于局部变量,只不过是同名为“n”而已。
#pirnt函数调用的“increase_one(n)”属于调用的这个函数的最终的值。
1.1有一种需要特殊注意,在函数内部处理被传递过来的值是可变容器(如列表)的时候:
def be_careful(a, b):
a = 2
b[0] = "What?!" #问题1,b[0]是啥意思?代表b的默认列表是[0]吗?
a = 1
b = [1, 2, 3]
be_careful(a, b)
a, b
上面运行结果:(1, ['What?!', 2, 3])
1.1.1 一个比较好的习惯是如果传递进来的值是列表,可以创建一个他的copy:
def be_careful(a, b):
a = 2
b_copy = b.copy() #先拷贝b的列表,复制到b_copy
b_copy[0] = 'What?!' #问题2,此处b_copy[0]默认值为?
a = 1
b = [1, 2, 3]
be_careful(a, b)
a, b
上面运行结果:(1, [1, 2, 3])
以上有两个问题点,初学python不是很理解。等待以后返回来解答。