标签:turn login 临时 strong 定义 补充 元素 opp 搜索
目录
形参中的* 会将溢出的位置实参全部接收, 然后以元祖的形式存储, 并将元祖赋值给*后面的args
# 我们习惯把*后面的形参叫做args
def func(a, *args):
    print(args)
    
func(1, 2, 3, 4)  # (2, 3, 4)实参中的*会将其后面的容器类型的元素(列表, 集合, 元祖, 字典)依次取出, 变成位置实参
def func(a, b, c, d):
    print(a, b, c, d)
    
tup = (2, 3)    
func(1, *tup, 4)  # 1 2 3 4形参中的**会将溢出的关键字实参全部接收, 然后以字典的形式存储, 并赋值给后面的kwargs
# 我们习惯把**后面的形参叫做kwargs
def func(a, **kwargs):
    print(kwargs)
    
func(1, b=2, c=3)  # {'b': 2, 'c': 3}实参中的**会将其后面的字典类型key:value取出, 转化为关键字实参(key=value)
def func(a, b, **kwargs):
    print(**kwargs)
    
dic = {'c':3, 'd':4}
func(1, 2, **dic)  # {'c': 3, 'd': 4}我们可以把函数看做一种数据类型, 函数名就是这个函数的函数对象
def func():
    print('from func')
print(func)  # <function func at 0x00000000024C1E18>
f = func
f()  # from funcdef func():
    print('from func')
    
lis = [func, 1, 2, 3]
lis[0]()  # from funcdef func1():
    print('from func1')
    
def func2(x):
    x()
        
func2(func1)  # from func1def func():
    print('from func1')
def func2(x):
    return x
res = func2(func1)
res()  # from func1# 简易购物系统
def register():
    print('注册')
def login():
    print('登录')
def shopping():
    print('购物')
func_dict = {
    '1': register,
    '2': login,
    '3': shopping
}
while True:
    print('''
1 注册
2 登录
3 购物
''')
    choice_inp = input('请选择你需要的功能(输入q退出): ')
    if choice_inp == 'q':
        break
    func_dict[choice_inp]()用来存储名称的空间(变量名/函数名等)
存储了Python内置方法的名称
存储了函数内部定义的名称
除了内置和局部的名称都存储在全局名称空间
比如我们现在要print(x), Python解释器就会在各个名称空间搜索我们有没有定义过x
搜索顺序: 先从当前名称空间开始寻找, 找不到会按着局部-->全局-->内置-->报错顺序寻找
全局有效, 全局存活, 包含内置名称空间+全局名称空间
局部有效, 临时存储, 只包含局部名称空间
def func():
    x = 1
    print(f'局部作用域x: {x}')
    
x = 2
func()  # x = 1
print(f'全局作用域x: {x}')
'''
局部作用域x: 1
全局作用域x: 2
'''def func1():
    x = 1
    def func2():
        x = 2
        print(f'局部作用域2中x: {x}')
    func2()  # x = 2
    print(f'局部作用域1中x: {x}')
    
    
func1()
'''
局部作用域2中x: 2
局部作用域1中x: 1
'''  x = 1
def func():
    global x  # global声明x为全局变量
    x = 2
func()
print(x)  # 2def func1():
    x = 1
    
    def func2():
        nonlocal x  # nonlocal声明x为顶层函数的局部作用域变量
        x = 2
        
    f2()
    print(x)
func1()  # 2
lis = []
def func():
    lis.append(1)
print(f"调用函数前: {lis}")
func()
print(f"调用函数后: {lis}")
'''
调用函数前: []
调用函数后: [1]
'''标签:turn login 临时 strong 定义 补充 元素 opp 搜索
原文地址:https://www.cnblogs.com/bigb/p/11559517.html