3 局部变量
3.1 定义:
只在函数里生效的变量,这个函数就是变量的作用域,离开了这个函数,就不存在了
eg def function(name):
print(name)
function("Logan")
print(name) #这个地方会报错,因为我们没有定义name
3.2 对应面
全局变量,在第一级定义的变量,后面所有的函数都可以调用
如果局部变量与全局变量重名,那么局部变量一定要在执行语句之前进行定义,否则会出现错报。
但是,我们可以在函数内部通过Globa 全局变量的方式,来修改全局变量
3.3 函数内部坚决不要声明全局变量,不要声明全局变量,不要声明全局变量。
因为在函数里面改的话,但是由于我们不知道该函数会被什么引用,这样的话全局变量怎么变得我们很难知道如何进行,导致我们无法调试。
3.4 列表,字典,集合都可以在函数中可以通过调用函数进行修改。
eg1 name=“Logan”
def chang_name(name):
print("Before print",name)
name="Logan L"
print("after print",name)
chang_name("Logan3")
print(name) # 结果还是Logan ,不会因为局部变量变化了name,就导致全局变量结果改变。
eg 2 names=["Logan","Sean","Emma"]
print(names)
def change_names():
names[0]="Logan L"
print(names)# 这里的结果就是 "Logan L", "Sean", "Emma", 全局变量变了
4 递归
4.1 定义
函数自动调用自己,就叫做递归函数
4.2 条件
必须有明确的结束条件
每次进入更深一层递归时,问题规模相比上次递归都应该有所减少
eg
def cal(n)
print(n)
if int(n/2)>0:
return cal(n/2)
print("-->",n)
cal(2)# 结果就是1,因为再除下去,就不满足int(0.5)>0的条件了