今日总结
- 名称空间
- 名字的查找顺序
- 作用域
- global与nonlocal关键字
- 函数名对象
- 函数的嵌套
内容详细
名称空间
1.内置名称空间:就是Python解释器提前给我们定义好的,像len() print() open()等
2.全局名称空间:在py文件中编写的代码运行产生的名字都会存放到全局名称空间
eg:name = 'jason'
def index():
pass
if True:
a = 1
for i in range(10):
pass
while True:
b = 2
3.局部名称空间:函数体代码运行产生的都是局部名称空间
eg:def index():
name = 'jasson'
1.内置名称空间:Python解释器一运行就会产生,一关闭就会销毁
2.全局名称空间:py文件开始运行就会产生,一结束就会销毁
3.局部名称空间:函数体代码运行就会产生,一结束就会销毁
名字的顺序查找
作用域
内置名称空间
程序任意阶段任意位置均可使用(全局有效)
全局名称空间
程序任意阶段任意位置均可使用(全局有效)
局部名称空间
一般情况下只在各自局部名称空间中有效(局部有效)
'''也可以通过一些手段打破规则'''
global与nonlocal关键字
eg:x = 1
def index():
x = 2
(并不是修改全局的x,而是在局部名称空间中创建一个新的x)
eg:def index():
x = 111
l1 = [11,22,33]
def f1():
l1.append(44)
f1()
print(X)
print(l1)
index()
函数名的多种用法
1.函数名可以当做变量名赋值
def index():
print('from function index')
print(index)
res = index
print(res)
res()
index()
2.函数名还可以当成函数的实参
def index():
print('from index')
def func(a):
print('from func')
print(a)
a()
func(index)
3.函数名还可以当做函数的返回值
def func():
print('from func')
return index
def index():
print('from index')
res = func()
print(res)
res()
4.函数名可以作为容器类型的元素(内部可以存放多个元素的数据类型,如列表、集合、字典等)
def index():
print('from index')
l1 = [11,22,33,index]
print(l1)
l1[-1]()
函数的嵌套
def index():
func()
print('from index')
def func():
index()
print('from func')
func()
def my_max(a,b):
"""返回两个数中的较大值"""
if a > b:
return a
return b
def many_max(a,b,c,d):
"""返回四个数中的较大值"""
res = my_max(a,b)
res1 = my_max(res,b)
res2 = my_max(res1,d)
...
def all_func(cmd):
def register():
print('注册功能')
def login():
print('登录功能')
def transfer():
print('转账功能')
if cmd == '1':
register()
elif cmd == '2':
login()
elif cmd == '3':
transfer()
else:
print('再见')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)