global与nonlocal关键字使用
global关键字
# x = 111 # def index(): # # 局部修改全局变量 需要使用关键字声明 # global x # x = 222 # index() # print(x) # 222
# name_list = ['jason', 'kevin'] # def index(): # name_list.append('heiheihei') # index() # print(name_list) # ['jason', 'kevin', 'heiheihei']
如果想在局部修改全局数据 如果数据为不可变类型则需要关键字global声明 如果数据为可变类型则无需关键字global声明
nonlocal
def index(): # x = 111 l1 = [11,22] def func(): # 内部局部修改外部局部 l1.append(333) func() print(l1) index() """ 如果想要在内部的局部修改外部局部的不可变类型数据 需要关键字nonlocal声明 """
函数对象
"""函数名遇到括号就会调用!!!"""
# 用法1:函数名可以当做变量名赋值 # def index(): # print('from index') # a = index # a() # 本质就是在调用index函数
# 用法2:函数名还可以当做函数的实参 # def index(): # print('from index') # def func(a): # print(a) # a() # print('from func') # func(index)
# 用法3:函数名还可以当做函数返回值 # def index(): # print('from index') # def func(): # print('from func') # return index # res = func() # 调用func并接受func的返回值 # res()
# 用法4:函数名可以当做容器类型(内部可以存放多个数据)的元素 # def index(): # print('from index') # l = [111, 222, 333, index()] # print(l)
函数嵌套
嵌套调用:函数内部调用其它函数 函数体内部定义其他函数 将复杂的功能全部隐藏起来 暴露一个简单的接口
# def index(): # print('from index') # def func(): # index() # print('from func') # func()
def all_func(type): def register(): print('注册功能') def login(): print('登录功能') def transfer(): print('转账功能') def shopping(): print('购物功能') # 这里仅仅是延时嵌套定义的现象 暂不考虑优化 if type == '1': register() elif type == '2': login() elif type == '3': transfer() elif type == '4': shopping() else: print('不知道啥功能') all_func('3')
闭包函数
闭:定义在函数内部的函数 包:函数内部函数使用了外部函数名称空间的名字 作用:闭包函数是函数传参的一种方式
直接传参 def func(x, y): print(x, y) func(2, 3)
闭包函数传参 def outer(): x = 1 y = 2 def func(): print(x, y) return func outer = func() func()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)