函数的嵌套+nonlocal和global关键字

函数的嵌套+nonlocal和global关键字,第1张

函数的嵌套+nonlocal和global关键字(重点)

1.在函数中声明函数
在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置

# 函数的互相调用
# def func1():
# print("我是神器的func1")
#
# def func2():
# func1()
# print("我是神器的func2")
#
# def func3():
# print("我是神器的func3")
# # func5()
#
# def func4():
# func3()
# print("我是神器的func4")
#
# def func5():
# func2()
# func3()
# print("我是神器的func5")
#
# def func6():
# func5()
# print("我是神器的func6")
# func3()
# func1()
#
# func6()

  

2.nonlocal和global关键字(重点)
global: 在局部引入全局变量
nonlocal: 在局部...内层函数引入外层离他最近的那个变量.

# def outer():
# def inner():
# print("我的天哪")
# print("还可以这样写???")
# inner()
#
# outer() # inner() # 在全局不能找到局部的内容 # def func1():
# print("1")
# def func2():
# print("2")
# def func3():
# print("3")
# print("4")
# func3()
# print(5)
# print("6")
# func2()
# print("7")
#
# func1() # 全局变量一般是不能随意的修改的
# a = 10
# def func():
# # 慎用.
# global a # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
# a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
# print("里面的打印",a)
# func()
# print("外面的打印", a) # a = 10
# def func():
# def inner():
# # 慎用.
# global a # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
# a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
# print("里面的打印",a)
# inner()
# func()
# print("外面的打印", a) # nonlocal 在局部, 寻找离他最近的外层的一个变量
# a = 50
# def func1():
# # a = 10 # 局部
# def func2():
# nonlocal a # 不找全局, global找全局
# a += 10 # a = a + 10 python不让这么干
# print("func2", a)
# func2()
# print(a)
# func1()
# print(a) # 如果没有nonlocal和global 查找的顺序: 自己, 上一层, 上一层, 上一层 # def func0():
# a = 50
# def func1():
# a = 10 # 局部
# def func2():
# nonlocal a # 不找全局, global找全局
# a += 10 # a = a + 10 python不让这么干
# print("func2", a)
# func2()
# print(a)
# func1()
# print(a)
# func0() # a = 1
# def fun_1():
# a = 2
# def fun_2():
# nonlocal a
# a = 3
# def fun_3():
# a = 4
# print(a)
# print(a)
# fun_3()
# print(a)
# print(a)
# fun_2()
# print(a)
# print(a)
# fun_1()
# print(a) flag = False def login():
global flag
uname = input("用户名:")
upwd = input("密码:")
if uname == "alex" and upwd == "123":
flag = True
else:
flag = False def fatie():
if flag == True:
print("可以发帖")
else:
print("滚去登录") login() fatie()
fatie()
fatie()
fatie()

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/588328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存