網(wǎng)站首頁 編程語言 正文
1.閉包的定義和使用
當(dāng)返回的內(nèi)部函數(shù)使用了外部函數(shù)的變量就形成了閉包
閉包可以對外部函數(shù)的變量進(jìn)行保存,還可以提高代碼的可重用性
實(shí)現(xiàn)閉包的標(biāo)準(zhǔn)格式:
- 1.函數(shù)嵌套
- 2.內(nèi)部函數(shù)使用外部函數(shù)的變量或參數(shù)
- 3.外部函數(shù)返回了內(nèi)部函數(shù)
'''
當(dāng)返回的內(nèi)部函數(shù)使用了外部函數(shù)的變量就形成了閉包
閉包可以對外部函數(shù)的變量進(jìn)行保存,還可以提高代碼的可重用性
實(shí)現(xiàn)閉包的標(biāo)準(zhǔn)格式:
? ? 1.函數(shù)嵌套
? ? 2.內(nèi)部函數(shù)使用外部函數(shù)的變量或參數(shù)
? ? 3.外部函數(shù)返回了內(nèi)部函數(shù)
'''
?
# 定義一個閉包
def outer(): ? ?# 外部函數(shù)
? ? n=1
? ? def inner(): ? ?# 內(nèi)部函數(shù)
? ? ? ? print(n)
? ? # 外函數(shù)返回內(nèi)函數(shù)的引用(不用帶括號哈)
? ? return inner
?
outer() # 調(diào)用外函數(shù)不會執(zhí)行內(nèi)函數(shù)
# inner() # 不能直接調(diào)用內(nèi)函數(shù)
ret=outer() # 把內(nèi)函數(shù)的引用給ret
print(ret)
ret()
?
# 閉包的使用
def person(name):
? ? def say(msg):
? ? ? ? print(f'{name} say: ?{msg}')
? ? return say
?
tom=person('Tom')
rose=person('Rose')
tom('Hello')
rose('World')
2.閉包內(nèi)函數(shù)修改外函數(shù)定義的變量(加nonlocal)
def outer():
? ? n=1
? ? def inner():
? ? ? ? nonlocal n ?# 不加會報(bào)錯,列表、字典、元祖不用加
? ? ? ? n=n+10
? ? ? ? print(n)
? ? print(n) ? ?# 輸出1
? ? return inner
?
fun=outer()
fun() ? # 輸出11
fun() ? # 輸出21
原文鏈接:https://kantlee.blog.csdn.net/article/details/122684641
相關(guān)推薦
- 2022-08-29 Python可視化神器pyecharts繪制雷達(dá)圖_python
- 2022-07-13 rsync下行同步+inotify實(shí)時(shí)同步部署
- 2022-09-04 Golang?實(shí)現(xiàn)?RTP音視頻傳輸示例詳解_Golang
- 2023-05-29 docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題及解決方法_docker
- 2023-03-27 python去除空格,tab制表符和\n換行符的小技巧分享_python
- 2023-07-05 uni-app處理請求發(fā)送表單類型的數(shù)據(jù)
- 2022-12-10 Qt如何自定義滑動條_C 語言
- 2021-12-01 CentOS7?防火墻(firewall)的操作命令大全_Linux
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支