日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

python打印經(jīng)典故事從前有座山的幾種寫法_python

作者:他們叫我技術(shù)總監(jiān) ? 更新時(shí)間: 2022-06-29 編程語(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

欄目分類
最近更新