一、命名关键字参数:
什么是命名关键字参数?格式:在*后面参数都是命名关键字参数特点:1 必须被传值1 约束函数的调用者必须按照key=value的形式传值2 约束函数的调用者必须用我们指定的key名 def foo(x,y,*,z): #创建foo函数,z为命名关键字参数 print(x,y,z)#foo(1,2,aaa=3) #报错,z为命名关键字参数,只能用用关键字z=值foo(1,2,z=3) ——————————————————————————————def auth(*args,name,pwd): #设定,name,pwd为命名关键字参数 print(name,pwd) auth(pwd=‘213‘,name=‘egon‘) #输入关键字参输
二、函数的嵌套:
1、函数的嵌套调用:在函数内又调用了其他函数def max2(x,y): #判断两个值大小,返回大的值 if x > y: return x else: return y def max3(x,y,z): #用嵌套方法判断三个数的值 res1=max2(x,y) res2=max2(res1,z) return res2 print(max3(11,199,2)) 2、函数的嵌套定义:在函数内又定义其他函数def func1(): #定义func1函数 print(‘from func1‘) def func2(): #func2=内存地址 #嵌套定义func2函数 print(‘from func2‘) print(func2) #<function func1.<locals>.func2 at 0x0000024907A098C8> #输出func2函数名地址 func2() func1() —————————————————————————————————— def f1(): #嵌套定义,调用f1执行,得出所有函数输出的值,全部被使用 print(‘f1‘) def f2(): print(‘f2‘) def f3(): print(‘f3‘) f3() f2()f1() ‘‘‘f1f2f3‘‘‘三、命名空间与作用域
一:名称空间:存放名字与值绑定关系的地方x=1111111111 def func(): pass 二:名称空间分为三类 1 内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效 2、全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效 3、局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放与局部名称空间), 在函数调用时临时生效,函数结束则失效 加载顺序:内置名称空间-》全局名称空间-》局部名称空间查找名字:局部名称空间-》全局名称空间-》内置名称空间 len=‘global‘ #调用f1,运行到f2方法输出len,从当前向外查找值,最后输出为globaldef f1(): # len=1 def f2(): # len=2 print(len) f2() f1() 三:作用域全局作用域:包含的是内置名称空间与全局名称空间的名字,特点1在任何位置都能够访问的到2该范围内的名字会伴随程序整个生命周期 局部作用域:包含的是局部名称空间的名字特点:1、只能在函数内使用2、调用函数时生效,调用结束失效
四、函数对象
函数在python中是第一类对象? 1、可以被引用def bar(): #创建bar函数 print(‘from bar‘) f=bar #引用bar函数f() 2、可以当中参数传入def bar(): #创建bar函数 print(‘from bar‘) def wrapper(func): #func=bar #创建wrapper函数,设定参数func func() #bar() wrapper(bar) #把bar当做参数传入 3、可以当做函数的返回值 def bar(): #创建bar函数 print(‘from bar‘) def foo(func): #func=<function bar at 0x00000225AF631E18> #创建foo函数,设定变量func,返回变量func return func #return <function bar at 0x00000225AF631E18> f=foo(bar) #f=<function bar at 0x00000225AF631E18> #把bar函数当做参数传入变量func,成为foo函数的返回值f() 4、可以当中容器类型的元素def get(): #创建get 函数 print(‘from get‘) def put(): #创建put函数 print(‘from put‘) l=[get,put] #建立列表输入两个函数 l[0]() #安索引调用get函数——————————————————————————————————例:def func(): print(‘from func‘) 1、func可以被引用f=func 2、func可以当作参数传给xdef bar(x): print(x) x() bar(func) 3、func还可以当作返回值def bar(x): # x=func return x #return func res=bar(func) #res=funcprint(res)res() 4 可以当中容器类型的元素def auth(): print(‘登陆。。。。。‘) def reigster(): print(‘注册。。。。。‘) def search(): print(‘查看。。。。‘) def transfer(): print(‘转账。。。。‘) def pay(): print(‘支付。。。。‘) dic={ ‘1‘:auth, ‘2‘:reigster, ‘3‘:search, ‘4‘:transfer, ‘5‘:pay} print(dic)dic[‘2‘]() def interactive(): while True: print(""" 1 认证 2 注册 3 查看 4 转账 5 支付 """) choice=input(‘>>: ‘).strip() if choice in dic: dic[choice]() else: print(‘非法操作‘) interactive() 五、闭包函数
1、闭包函数 闭:指的是定义在函数内部的函数!!!作用域关系 在函数定义阶段就规定死了,与调用位置无关def outter(): #创建outter函数,创建变量x x=2 def inner(): #创建inner函数,输出x # x=1 print(‘from inner‘,x) return inner #返回inner函数 f=outter() #f=inner #把返回的嵌套定义函数赋予f,这样f就可以调用被嵌套定义的函数了f() 闭包函数:1、定义在函数内部的函数2、 并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数 def outter(): #定义函数outter,并定义变量name name=‘egon‘ def inner(): print(‘my name is %s‘ %name) #定义函数inner,输出name return inner #返回函数inner f=outter() #把嵌套定义函数inner赋值给f 了解:为函数体传值的方式方式一:将值以参数的形式的传入import requests #闭合函数,变换变量,变换地址def get(url): response=requests.get(url) if response.status_code == 200: print(response.text)get(‘https://www.baidu.com‘) 方式二import requestsimport time def outter(url): #url=‘https://www.baidu.com #定义函数outter,形参url def get(): #定义函数 get 根据网址,怕网址数据 response=requests.get(url) if response.status_code == 200: print(response.text) return get #返回函数get baidu=outter(‘https://www.baidu.com‘) #把带实参百度地址的函数赋予baidu,以后只需要运行只需要运行baidu()就可以了python=outter(‘https://www.python.org‘) #把带实参python地址的函数赋予python,以后只需要运行只需要运行python()就可以了
原文地址:https://www.cnblogs.com/yangli0504/p/8665553.html
时间: 2024-11-12 19:51:02