# 这个例子说明如果函数中没有直接定义某变量,则他会向父级寻找,优先级:自己-父级-爷爷级···
name = "niu"
def guess():
print(">>NO.1", name)
guess() # 输出"niu"
# 嵌套函数(函数当中包含函数)
name2 = "shi"
def guess2():
name2 = "chong"
print(">>NO.2.1", name2)
def guess3():
name2 = "牛"
print(">>NO.2.2", name2)
guess3() # 调用guess2()时,不会直接触发guess3(),在一级一级往下执行时,末尾加上触发二级函数的语句,才会执行
guess2() # 执行输出 chong 和 牛 ,进一步验证guess()的结论
# 嵌套函数拓展
name3 = "shi"
def guess3():
print(">>NO.3.1", name3)
def guess4():
name3 = "牛"
print(">>NO.3.2", name3)
name3 = "chong"
guess4()
guess3() # 会报错,因为执行"print(">>NO.3.1", name3)" name3的寻找模棱两可
# 嵌套函数拓展2
name4 = "shi"
def guess4():
global name4
name4 = "屎"
print(">>NO.4.1", name4)
def guess5():
print(">>NO.4.2", name4)
guess5()
guess4()
print(name4) # 利用global函数,将局部变量的name4变量变成全局变量 不建议使用