網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、前期準(zhǔn)備
假設(shè)parent/__init__.py 里的代碼是:
# -*- coding: UTF-8 -*- print('從前有座山,')
假設(shè)parent/one/__init__.py 里的代碼是:
# -*- coding: UTF-8 -*- print('山上有座廟,')
假設(shè)parent/one/one/__init__.py 里的代碼是:
# -*- coding: UTF-8 -*- print('廟里有個(gè)老和尚,')
假設(shè)parent/two/__init__.py 里的代碼是:
# -*- coding: UTF-8 -*- print('老和尚說(shuō):')
假設(shè)parent/three/__init__.py 里的代碼是:
# -*- coding: UTF-8 -*- print('從前有座山,')
按上述所示建立對(duì)于的py文件。對(duì)應(yīng)效果如下圖所示。感覺(jué)在無(wú)線套娃,挺有意思的,哈哈哈。?
二、多種import調(diào)用方法?
如果一個(gè)模塊被import過(guò),Python 會(huì)將導(dǎo)入的模塊緩存在sys.modules
字典里緩存起來(lái),再次導(dǎo)入的時(shí)候不會(huì)重新執(zhí)行導(dǎo)入動(dòng)作,直接從緩存里取。反之,如果我們從sys.modules
里把導(dǎo)入的模塊刪除,則再次import會(huì)再次觸發(fā)模塊導(dǎo)入動(dòng)作。
利用以上知識(shí),我們的目標(biāo)是通過(guò)?import?語(yǔ)句導(dǎo)入模塊,觸發(fā)每個(gè)包目錄下__init__.py
加載時(shí)執(zhí)行print語(yǔ)句,從而循環(huán)打印出:
從前有座山,
山上有座廟,
廟里有個(gè)老和尚,
老和尚說(shuō):
從前有座山,
山上有座廟,
廟里有個(gè)老和尚,
老和尚說(shuō):
從前有座山,
...
首先先介紹下python中del的用法,del用于刪除對(duì)應(yīng)的變量的引用。
由于python都是引用,而python有GC機(jī)制,所以,del語(yǔ)句作用在變量上,而不是數(shù)據(jù)對(duì)象上。
if __name__=='__main__': a=1 # 對(duì)象 1 被 變量a引用,對(duì)象1的引用計(jì)數(shù)器為1 b=a # 對(duì)象1 被變量b引用,對(duì)象1的引用計(jì)數(shù)器加1 c=a #1對(duì)象1 被變量c引用,對(duì)象1的引用計(jì)數(shù)器加1 del a #刪除變量a,解除a對(duì)1的引用 del b #刪除變量b,解除b對(duì)1的引用 print(c) #最終變量c仍然引用1
del刪除的是變量,而不是數(shù)據(jù)。
1、第一種寫法
import sys if __name__ == '__main__': while True: import parent.one.one import parent.two import parent del sys.modules['parent.one'] del sys.modules['parent.one.one'] del sys.modules['parent.two'] del sys.modules['parent']
效果圖
2、?第二種寫法
import sys if __name__ == '__main__': while True: import parent.one.one import parent.two del sys.modules['parent'] del sys.modules['parent.one'] del sys.modules['parent.one.one'] del sys.modules['parent.two']
效果圖
3、第三種寫法
import sys if __name__ == '__main__': while True: import parent import parent.one import parent.one.one import parent.two del sys.modules['parent'] del sys.modules['parent.one'] del sys.modules['parent.one.one'] del sys.modules['parent.two']
?效果圖
總結(jié)
原文鏈接:https://blog.csdn.net/qq_29061315/article/details/124546482
相關(guān)推薦
- 2022-05-05 Entity?Framework管理一對(duì)二實(shí)體關(guān)系_實(shí)用技巧
- 2022-08-23 自學(xué)python求已知DNA模板的互補(bǔ)DNA序列_python
- 2022-04-02 Android?studio實(shí)現(xiàn)日期?、時(shí)間選擇器與進(jìn)度條_Android
- 2022-08-14 Selenium定位瀏覽器彈窗方法實(shí)例總結(jié)_python
- 2022-06-01 Python實(shí)現(xiàn)圖像的二進(jìn)制與base64互轉(zhuǎn)_python
- 2023-03-29 基于WPF實(shí)現(xiàn)多選下拉控件的示例代碼_C#教程
- 2022-11-11 Python?GUI程序類寫法與Label介紹_python
- 2022-06-26 Android如何使用圓形揭露動(dòng)畫巧妙地隱藏或顯示View詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤: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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支