python打印经典故事从前有座山的几种写法

 更新时间:2022年05月05日 09:55:25   作者:他们叫我技术总监  
在定义了函数之后,就可以使用该函数了,下面这篇文章主要给大家介绍了关于python打印经典故事从前有座山的几种写法,通过这个有意思的实例帮助大家学习python,需要的朋友可以参考下

一、前期准备

假设parent/__init__.py 里的代码是:

# -*- coding: UTF-8 -*-
print('从前有座山,')

假设parent/one/__init__.py 里的代码是:

# -*- coding: UTF-8 -*-
print('山上有座庙,')

假设parent/one/one/__init__.py 里的代码是:

# -*- coding: UTF-8 -*-
print('庙里有个老和尚,')

假设parent/two/__init__.py 里的代码是:

# -*- coding: UTF-8 -*-
print('老和尚说:')

假设parent/three/__init__.py 里的代码是:

# -*- coding: UTF-8 -*-
print('从前有座山,')

按上述所示建立对于的py文件。对应效果如下图所示。感觉在无线套娃,挺有意思的,哈哈哈。 

二、多种import调用方法 

如果一个模块被import过,Python 会将导入的模块缓存在sys.modules字典里缓存起来,再次导入的时候不会重新执行导入动作,直接从缓存里取。反之,如果我们从sys.modules里把导入的模块删除,则再次import会再次触发模块导入动作。

利用以上知识,我们的目标是通过 import 语句导入模块,触发每个包目录下__init__.py加载时执行print语句,从而循环打印出:

从前有座山,
山上有座庙,
庙里有个老和尚,
老和尚说:
从前有座山,
山上有座庙,
庙里有个老和尚,
老和尚说:
从前有座山,
...

首先先介绍下python中del的用法,del用于删除对应的变量的引用。

由于python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上。

if __name__=='__main__':
    a=1       # 对象 1 被 变量a引用,对象1的引用计数器为1
    b=a       # 对象1 被变量b引用,对象1的引用计数器加1
    c=a       #1对象1 被变量c引用,对象1的引用计数器加1
    del a     #删除变量a,解除a对1的引用
    del b     #删除变量b,解除b对1的引用
    print(c)  #最终变量c仍然引用1

del删除的是变量,而不是数据。

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']

 效果图

总结

到此这篇关于python打印经典故事从前有座山的文章就介绍到这了,更多相关python打印从前有座山内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python使用pooch实现下载网络文件

    python使用pooch实现下载网络文件

    pooch是python的一个模块,主打一个更加方便地下载文件,适用于科研人员和开发者,目前,已经有scikit-image, MetPy, scipy, seaborn等项目采用pooch作为内置数据集的下载方法,本文给大家介绍了python用pooch便捷地下载网络文件,需要的朋友可以参考下
    2024-01-01
  • 浅析pandas随机排列与随机抽样

    浅析pandas随机排列与随机抽样

    这篇文章主要介绍了pandas随机排列与随机抽样的相关资料,帮助大家更好的利用pandas进行数据分析,感兴趣的朋友可以了解下
    2021-01-01
  • python dataframe向下向上填充,fillna和ffill的方法

    python dataframe向下向上填充,fillna和ffill的方法

    今天小编就为大家分享一篇python dataframe向下向上填充,fillna和ffill的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python3 执行Linux Bash命令的方法

    Python3 执行Linux Bash命令的方法

    今天小编就为大家分享一篇Python3 执行Linux Bash命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python中正则表达式的用法实例汇总

    Python中正则表达式的用法实例汇总

    这篇文章主要介绍了Python中正则表达式的用法实例汇总,非常实用,需要的朋友可以参考下
    2014-08-08
  • apache部署python程序出现503错误的解决方法

    apache部署python程序出现503错误的解决方法

    这篇文章主要给大家介绍了关于在apahce部署python程序出现503错误的解决方法,文中通过示例代码介绍的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Python中的TCP socket写法示例

    Python中的TCP socket写法示例

    最近在学习脚本语言python,所以下面这篇文章主要给大家介绍了关于Python中TCP socket写法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们一起来看看吧
    2018-05-05
  • python3编写ThinkPHP命令执行Getshell的方法

    python3编写ThinkPHP命令执行Getshell的方法

    这篇文章主要介绍了python3编写ThinkPHP命令执行Getshell的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Python中list的交、并、差集获取方法示例

    Python中list的交、并、差集获取方法示例

    这篇文章主要介绍了Python中list的交、并、差集获取方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python使用PIL缩放网络图片并保存的方法

    python使用PIL缩放网络图片并保存的方法

    这篇文章主要介绍了python使用PIL缩放网络图片并保存的方法,涉及Python操作网络图片的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论