标签:命名空间 没有 pass pre 文件 lob global 全局 int
def eat(a,b,v,f,g):
print(a,b,v,f,g)
eat(‘方便面‘,‘包子‘,‘麻团‘,‘豆浆‘,‘咸菜‘)
def eat(a,b,*args): # 聚合 打包
print(a,b,args) # 元祖
# 形参位置 : 位置参数 > 动态位置参数
eat(‘方便面‘,‘包子‘,‘麻团‘,‘豆浆‘,‘咸菜‘,‘油条‘,‘火鸡面‘,‘小笼包‘,‘炒饼‘)
def eat(b=1,**kwargs): # b=1 b =‘2‘
print(kwargs) # {‘a‘: ‘1‘, ‘c‘: ‘4‘, ‘d‘: ‘5‘, ‘f‘: ‘22‘}
# print(kwargs[‘b‘]) #keyError
print(b)
eat(a=‘1‘,b=‘2‘,c=‘4‘,d=‘5‘,f=‘22‘)
动态关键字参数 默认参数 > 动态默认参数
def func(a,b,*args): # 聚合
print(a,b,*args) # 打散
func(1,2,3,4,5,6)
def func(a=1,b=2,**kwargs): # 默认参数** 聚合
print(a,b,kwargs)
func(a=56,c=22,b=444,d=66)
def func(a,b,c=1,*args,**kwargs): 错误的示范
print(a,b,c,args,kwargs)
func(1,2,3,4,5,6,7,8,d=1,f=3)
def func(a,b,*args,c=1,**kwargs): # 位置 > 动态位置 > 默认参数 > 动态默认参数
print(a,b,c,args,kwargs)
func(1,2,3,4,5,6,7,8,c=55,d=1,f=3)
def func(*args,**kwargs): #万能 无敌
print(args,kwargs)
func(1,2,3,4,a=1,b=2,c=3) # 位置 关键字 混合
lst =[1,2,3,5,4]
def func(*args): # 聚合
print(*args) #打散
func(*lst) # 打散 去壳
dic= {‘1‘:22,‘2‘:55}
def func(**kwargs): #聚合
print(kwargs)
func(**dic) #打散 1 = ‘22‘ ,‘2‘ = 55
函数的注释
def func(a,**kwargs):
‘‘‘
:param a: 年龄
:param kwargs: 万能的默认参数
:return: 返回值
‘‘‘
# print(args)
# print(kwargs)
# return args
# print(func.__doc__) #查看函数的注释 函数名.__doc__
函数的名称空间
内置空间
全局空间
局部空间
Python关键字是存在内置空间的
py文件中顶头写的内容就存在全局空间
函数内写的变量存在局部空间
a = 1
b = 2
def func():
print(1)
a = 10
def func():
a = 1 # 局部空间
print(a)
func()
def func1():
print(a) # 局部空间不是共享的
func1()
找值顺序: 局部空间 > 全局空间 > 内置空间
加载顺序: 内置空间 > 全局空间 > 局部空间
作用域命名空间:
内置空间 + 全局空间 == 全局 globals()
局部空间 locals()
函数的嵌套:
def func():
print(1)
func()
func()
def func():
print(1)
def func():
func1()
print(1)
def func2():
print(33)
func()
def func1():
print(2)
func2()
def func():
print(1)
def func1():
print(2)
func3()
def func2():
print(5)
def func3():
print(4)
func2() #飘红不代表报错\
func1()
func()
def fun1():
print(1)
def fun2():
print(2)
def fun3():
print(3)
def fun6():
print(6)
fun3()
def fun4():
print(4)
def fun7():
print(7)
fun7()
def fun5():
print(5)
fun5()
fun4()
fun6()
fun2()
fun1()
globals()
locals()
a = 10
def func():
a = 20
def func1():
pass
print(a)
# print(globals()) #查看全局作用域 内容的
# print(locals()) # 查看局部作用域 内容的
func()
global 全局
nonlocal
a = 10 #
def func():
global c # 申明我要修改全局的变量a的值
b = 100
print(b) #100
print(locals()) # {} 存放我局部作用域里的一个容器 {‘b‘:100}
func()
print(a) #10
a = 11
def func():
def fun1():
def func2():
global a
a =100
print(a)
fun1()
func()
print(a)
n = 1
def func():
n = 10
def func2():
def func1():
nonlocal n #修改 离得 最近 上一次 里的变量值,
# 上一次没有就继续往上找,找到全局最外层局部
n = 100
print(n) # 10
func1()
func2()
func()
print(n)
b = 10
def func():
b = 100
print(b)
def func1():
print(b) # 100
def func2():
print(b) # 100
def func3():
nonlocal b
b = 5
print(b) # 5
func3()
print(b) # 5
func2()
print(b) # 5
func1()
print(b) # 5
func()
print(b) # 10
标签:命名空间 没有 pass pre 文件 lob global 全局 int
原文地址:https://www.cnblogs.com/YZL2333/p/10257075.html