python notice8 函数名应用和闭包
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python notice8 函数名应用和闭包,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1556字,纯文字阅读大概需要3分钟。
内容图文
![python notice8 函数名应用和闭包](/upload/InfoBanner/zyjiaocheng/751/845fe260f8d143098f24d3a549046047.jpg)
一、函数名的应用
函数名是一个特殊的变量,函数名配合括号(函数名())可以执行函数。
1.函数名的内存地址。
def func(): print("呵呵") print(func) 结果: <function func at 0x1101e4ea0>
2.函数名可以赋值给其他变量,该变量配合括号即可调用函数。
def func(): print("呵呵") a = func a() # 相当于调用func()
3.可以作为list的元素,for循环调用。
def func1(): print("你好") def func2(): print("我好") def func3(): print("他好") lst = [func1,func2,func3] for el in lst: el()
4.函数名可以作为函数的参数。
def func1(): print("小黑人") def func2(fn): #func1作为func2的参数 fn() func2(func1)
5.函数名可以作为函数的返回值。
def func_1(): print("函数1") def func_2(): print("函数2") return func_2 fn = func_1() #func1执行完毕后返回func2,赋值给fn。 fn() #fn配合括号即可执行func2函数,这样就可以在函数外面调用内部函数。
二、闭包
闭包就是内层函数,对外层函数(非全局)变量的引用。(内存函数对外层函数局部变量的访问)
def func1(): name = "小黑人" def func2(): print(name) # 闭包,func2引用了func1中的变量。 func2() func1() 结果: 小黑人
可以使用_ _closure_ _监测函数是否为闭包,返回cell就是闭包,返回None就不是闭包。
def func1(): name = "小黑人" def func2(): print(name) # 闭包 func2() print(func2.__closure__) func1() 结果: 小黑人 (<cell at 0x0000025B7957D798: str object at 0x0000025B7955BE10>,)
注:print(func2.__closure__)一定要写函数内部,即func1函数里面,如果写到外面会报错。
闭包优点:
1.安全,别的用户不可以更改。如定义一个全局变量,在函数中使用global即可修改这个全局变量,不安全。
2.外层函数中的变量常驻内存,方便函数外部调用。同时可以避免函数多次调用时的加载时间,如爬虫信息量大时。
内容总结
以上是互联网集市为您收集整理的python notice8 函数名应用和闭包全部内容,希望文章能够帮你解决python notice8 函数名应用和闭包所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。