• py16_Python 库包与模块概念与导入使用


    ##################################################

    目录

    活动简介

    Python 库包与模块概念及导入使用

    Python 模块

    函数、类、模块、包、库 通俗的解释

    关于 Python 的搜索路径

    说一下 sys 中的 sys.path sys.argv

    dir() 怎么查看可用方法

    Python 包与库概念

    包概念总结

    库概念总结

    Python 中使用 import 或 from-import 导入模块

    导入整个模块

    只希望导入模块中指定的一部分

    还可以根据类名函数名导入

    从某个模块中导入多个函数

    使用 as 为包名设置一个简称

    关于初始化调用模块可执行代码


    ##################################################

    活动简介

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…

    欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!

    ##################################################

    Python 库包与模块概念及导入使用

    ——————————

    Python 模块

    %%%%%

    函数、类、模块、包、库 通俗的解释

            函数是完成特定功能的一段程序 是可复用程序的最小组成单位

            类是包含一组数据及操作这些数据或传递消息的函数的集合

            模块是在函数和类的基础上将一系列相关代码组织到一起的集合体

            在 Python 中一个模块就是一个扩展名为 .py 的源程序文件!


            为了方便调用将一些功能相近的模块组织在一起
            或是将一个较为复杂的模块拆分为多个组成部分
            可以将这些 .py 源程序文件放在同一个文件夹下按照 Python 的规则进行管理
            这样的文件夹和其中的文件就称为包

            以 __init__.py 为文件名表示声明该文件夹是一个 Python 包的源程序目录

            库则是功能相关联的包的集合

    %%%%%

    关于 Python 的搜索路径

            在导入一个包时 Python 首先在当前包中查找模块
            若找不到则在内置的 built-in 模块中查找

            仍然找不到的话会根据 sys.path 中的目录来寻找这个包中包含的子目录

            目录只有包含 __init__.py 文件时才会被认作是一个包
            最简单的就是建立一个内容为空的文件并命名为 __init__.py
            事实上 __init__.py 还应定义 __all__ 用来支持模糊导入

            可以使用以下语句查看当前系统的 Python 搜索路径:

    1. >>> import sys
    2. >>> sys.path
    3. ['', 'D:\\1.Environment\\Python\\Python310\\python310.zip', 'D:\\1.Environment\\
    4. Python\\Python310\\DLLs', 'D:\\1.Environment\\Python\\Python310\\lib', 'D:\\1.En
    5. vironment\\Python\\Python310', 'D:\\1.Environment\\Python\\Python310\\lib\\site-
    6. packages']
    7. >>>

            我的结果如下:

    1. D:\\1.Environment\\Python\\Python310\\python310.zip
    2. D:\\1.Environment\\Python\\Python310\\DLLs
    3. D:\\1.Environment\\Python\\Python310\\lib
    4. D:\\1.Environment\\Python\\Python310
    5. D:\\1.Environment\\Python\\Python310\\lib\\site-packages

            需要注意的是 Python 安装目录下的 Lib 文件夹内存放了内置的标准库:

    1. D:\1.Environment\Python\Python310\Lib>dir
    2. 驱动器 D 中的卷是 Work
    3. 卷的序列号是 000D-8D77
    4. D:\1.Environment\Python\Python310\Lib 的目录
    5. 2022/08/02 01:52 .
    6. 2022/08/02 01:52 ..
    7. 2022/06/06 16:22 6,710 abc.py
    8. 2022/06/06 16:22 33,552 aifc.py
    9. 2022/06/06 16:22 517 antigravity.py
    10. 2022/06/06 16:22 100,725 argparse.py
    11. 2022/06/06 16:22 61,273 ast.py
    12. 2022/06/06 16:22 11,835 asynchat.py
    13. 2022/08/02 01:50 asyncio
    14. 2022/06/06 16:22 20,917 asyncore.py
    15. 2022/06/06 16:22 21,450 base64.py
    16. 2022/06/06 16:22 33,114 bdb.py
    17. 2022/06/06 16:22 15,286 binhex.py
    18. 2022/06/06 16:22 3,245 bisect.py
    19. 2022/06/06 16:22 12,191 bz2.py
    20. 2022/06/06 16:22 25,334 calendar.py
    21. 2022/06/06 16:22 35,103 cgi.py
    22. 2022/06/06 16:22 12,417 cgitb.py
    23. 2022/06/06 16:22 5,604 chunk.py
    24. 2022/06/06 16:22 15,261 cmd.py
    25. 2022/06/06 16:22 10,937 code.py
    26. 2022/06/06 16:22 37,798 codecs.py
    27. 2022/06/06 16:22 5,683 codeop.py
    28. 2022/08/02 01:50 collections
    29. 2022/06/06 16:22 4,182 colorsys.py
    30. 2022/06/06 16:22 20,706 compileall.py
    31. 2022/08/02 01:50 concurrent
    32. 2022/06/06 16:22 55,978 configparser.py
    33. 2022/06/06 16:22 26,627 contextlib.py
    34. 2022/06/06 16:22 133 contextvars.py
    35. 2022/06/06 16:22 8,982 copy.py
    36. 2022/06/06 16:22 7,645 copyreg.py
    37. 2022/06/06 16:22 6,525 cProfile.py
    38. 2022/06/06 16:22 3,939 crypt.py
    39. 2022/06/06 16:22 16,474 csv.py
    40. 2022/08/02 01:50 ctypes
    41. 2022/08/02 01:50 curses
    42. 2022/06/06 16:22 57,841 dataclasses.py
    43. 2022/06/06 16:22 90,610 datetime.py
    44. 2022/08/02 01:50 dbm
    45. 2022/06/06 16:22 331 decimal.py
    46. 2022/06/06 16:22 85,364 difflib.py
    47. 2022/06/06 16:22 20,560 dis.py
    48. 2022/08/02 01:50 distutils
    49. 2022/06/06 16:22 107,953 doctest.py
    50. 2022/08/02 01:50 email
    51. 2022/08/02 01:50 encodings
    52. 2022/08/02 01:50 ensurepip
    53. 2022/06/06 16:22 40,884 enum.py
    54. 2022/06/06 16:22 10,491 filecmp.py
    55. 2022/06/06 16:22 16,699 fileinput.py
    56. 2022/06/06 16:22 6,912 fnmatch.py
    57. 2022/06/06 16:22 28,990 fractions.py
    58. 2022/06/06 16:22 36,477 ftplib.py
    59. 2022/06/06 16:22 39,068 functools.py
    60. 2022/06/06 16:22 5,130 genericpath.py
    61. 2022/06/06 16:22 7,704 getopt.py
    62. 2022/06/06 16:22 6,175 getpass.py
    63. 2022/06/06 16:22 28,054 gettext.py
    64. 2022/06/06 16:22 8,125 glob.py
    65. 2022/06/06 16:22 9,819 graphlib.py
    66. 2022/06/06 16:22 22,458 gzip.py
    67. 2022/06/06 16:22 10,498 hashlib.py
    68. 2022/06/06 16:22 23,478 heapq.py
    69. 2022/06/06 16:22 7,936 hmac.py
    70. 2022/08/02 01:50 html
    71. 2022/08/02 01:50 http
    72. 2022/08/02 01:52 idlelib
    73. 2022/06/06 16:22 56,515 imaplib.py
    74. 2022/06/06 16:22 3,976 imghdr.py
    75. 2022/06/06 16:22 10,937 imp.py
    76. 2022/08/02 01:50 importlib
    77. 2022/06/06 16:22 127,052 inspect.py
    78. 2022/06/06 16:22 4,310 io.py
    79. 2022/06/06 16:22 77,010 ipaddress.py
    80. 2022/08/02 01:50 json
    81. 2022/06/06 16:22 1,124 keyword.py
    82. 2022/08/02 01:50 lib2to3
    83. 2022/06/06 16:22 5,837 linecache.py
    84. 2022/06/06 16:22 79,885 locale.py
    85. 2022/08/02 01:50 logging
    86. 2022/06/06 16:22 13,633 lzma.py
    87. 2022/06/06 16:22 80,945 mailbox.py
    88. 2022/06/06 16:22 8,429 mailcap.py
    89. 2022/06/06 16:22 23,180 mimetypes.py
    90. 2022/06/06 16:22 25,086 modulefinder.py
    91. 2022/08/02 01:50 msilib
    92. 2022/08/02 01:50 multiprocessing
    93. 2022/06/06 16:22 5,890 netrc.py
    94. 2022/06/06 16:22 42,113 nntplib.py
    95. 2022/06/06 16:22 29,215 ntpath.py
    96. 2022/06/06 16:22 2,968 nturl2path.py
    97. 2022/06/06 16:22 10,731 numbers.py
    98. 2022/06/06 16:22 6,118 opcode.py
    99. 2022/06/06 16:22 11,211 operator.py
    100. 2022/06/06 16:22 62,050 optparse.py
    101. 2022/06/06 16:22 40,636 os.py
    102. 2022/06/06 16:22 51,036 pathlib.py
    103. 2022/06/06 16:22 64,992 pdb.py
    104. 2022/06/06 16:22 66,766 pickle.py
    105. 2022/06/06 16:22 96,376 pickletools.py
    106. 2022/06/06 16:22 9,161 pipes.py
    107. 2022/06/06 16:22 25,291 pkgutil.py
    108. 2022/06/06 16:22 43,246 platform.py
    109. 2022/06/06 16:22 29,150 plistlib.py
    110. 2022/06/06 16:22 15,681 poplib.py
    111. 2022/06/06 16:22 16,763 posixpath.py
    112. 2022/06/06 16:22 25,114 pprint.py
    113. 2022/06/06 16:22 23,481 profile.py
    114. 2022/06/06 16:22 30,105 pstats.py
    115. 2022/06/06 16:22 5,400 pty.py
    116. 2022/06/06 16:22 11,710 pyclbr.py
    117. 2022/06/06 16:22 112,431 pydoc.py
    118. 2022/08/02 01:50 pydoc_data
    119. 2022/06/06 16:22 8,049 py_compile.py
    120. 2022/06/06 16:22 11,822 queue.py
    121. 2022/06/06 16:22 7,510 quopri.py
    122. 2022/06/06 16:22 34,151 random.py
    123. 2022/06/06 16:22 16,243 re.py
    124. 2022/06/06 16:22 5,428 reprlib.py
    125. 2022/06/06 16:22 8,036 rlcompleter.py
    126. 2022/06/06 16:22 13,432 runpy.py
    127. 2022/06/06 16:22 6,518 sched.py
    128. 2022/06/06 16:22 2,108 secrets.py
    129. 2022/06/06 16:22 20,155 selectors.py
    130. 2022/06/06 16:22 8,803 shelve.py
    131. 2022/06/06 16:22 13,851 shlex.py
    132. 2022/06/06 16:22 54,226 shutil.py
    133. 2022/06/06 16:22 2,530 signal.py
    134. 2022/08/02 01:52 site-packages
    135. 2022/06/06 16:22 23,261 site.py
    136. 2022/06/06 16:22 36,144 smtpd.py
    137. 2022/06/06 16:22 46,558 smtplib.py
    138. 2022/06/06 16:22 7,356 sndhdr.py
    139. 2022/06/06 16:22 37,693 socket.py
    140. 2022/06/06 16:22 28,140 socketserver.py
    141. 2022/08/02 01:50 sqlite3
    142. 2022/06/06 16:22 28,781 sre_compile.py
    143. 2022/06/06 16:22 7,438 sre_constants.py
    144. 2022/06/06 16:22 41,855 sre_parse.py
    145. 2022/06/06 16:22 53,651 ssl.py
    146. 2022/06/06 16:22 5,680 stat.py
    147. 2022/06/06 16:22 44,332 statistics.py
    148. 2022/06/06 16:22 10,846 string.py
    149. 2022/06/06 16:22 13,189 stringprep.py
    150. 2022/06/06 16:22 272 struct.py
    151. 2022/06/06 16:22 85,984 subprocess.py
    152. 2022/06/06 16:22 18,684 sunau.py
    153. 2022/06/06 16:22 10,520 symtable.py
    154. 2022/06/06 16:22 28,412 sysconfig.py
    155. 2022/06/06 16:22 11,741 tabnanny.py
    156. 2022/06/06 16:22 98,137 tarfile.py
    157. 2022/06/06 16:22 23,931 telnetlib.py
    158. 2022/06/06 16:22 29,309 tempfile.py
    159. 2022/08/02 01:52 test
    160. 2022/06/06 16:22 20,266 textwrap.py
    161. 2022/06/06 16:22 1,031 this.py
    162. 2022/06/06 16:22 58,849 threading.py
    163. 2022/06/06 16:22 13,871 timeit.py
    164. 2022/08/02 01:52 tkinter
    165. 2022/06/06 16:22 2,523 token.py
    166. 2022/06/06 16:22 26,605 tokenize.py
    167. 2022/06/06 16:22 29,935 trace.py
    168. 2022/06/06 16:22 26,910 traceback.py
    169. 2022/06/06 16:22 18,607 tracemalloc.py
    170. 2022/06/06 16:22 915 tty.py
    171. 2022/06/06 16:22 147,901 turtle.py
    172. 2022/08/02 01:52 turtledemo
    173. 2022/06/06 16:22 10,424 types.py
    174. 2022/06/06 16:22 95,164 typing.py
    175. 2022/08/02 01:50 unittest
    176. 2022/08/02 01:50 urllib
    177. 2022/06/06 16:22 7,165 uu.py
    178. 2022/06/06 16:22 28,052 uuid.py
    179. 2022/08/02 01:50 venv
    180. 2022/06/06 16:22 20,237 warnings.py
    181. 2022/06/06 16:22 18,517 wave.py
    182. 2022/06/06 16:22 22,235 weakref.py
    183. 2022/06/06 16:22 24,962 webbrowser.py
    184. 2022/08/02 01:50 wsgiref
    185. 2022/06/06 16:22 6,154 xdrlib.py
    186. 2022/08/02 01:50 xml
    187. 2022/08/02 01:50 xmlrpc
    188. 2022/06/06 16:22 7,741 zipapp.py
    189. 2022/06/06 16:22 91,315 zipfile.py
    190. 2022/06/06 16:22 30,913 zipimport.py
    191. 2022/08/02 01:50 zoneinfo
    192. 2022/06/06 16:22 3,359 _aix_support.py
    193. 2022/06/06 16:22 2,772 _bootsubprocess.py
    194. 2022/06/06 16:22 33,211 _collections_abc.py
    195. 2022/06/06 16:22 9,000 _compat_pickle.py
    196. 2022/06/06 16:22 5,843 _compression.py
    197. 2022/06/06 16:22 15,049 _markupbase.py
    198. 2022/06/06 16:22 22,361 _osx_support.py
    199. 2022/06/06 16:22 235,086 _pydecimal.py
    200. 2022/06/06 16:22 97,185 _pyio.py
    201. 2022/06/06 16:22 6,336 _py_abc.py
    202. 2022/06/06 16:22 3,231 _sitebuiltins.py
    203. 2022/06/06 16:22 25,856 _strptime.py
    204. 2022/06/06 16:22 7,462 _threading_local.py
    205. 2022/06/06 16:22 6,129 _weakrefset.py
    206. 2022/06/06 16:22 5,302 __future__.py
    207. 2022/06/06 16:22 65 __phello__.foo.py
    208. 2022/08/02 01:54 __pycache__
    209. 169 个文件 4,740,569 字节
    210. 35 个目录 6,143,684,608 可用字节
    211. D:\1.Environment\Python\Python310\Lib>

            而 Lib/site-packages 目录下 有的 Linux 发行版是 lib/dist-packages
            存放了用户自行安装的第三方 模块/库 :

    D:\1.Environment\Python\Python310\Lib\site-packages
    D:\1.Environment\Python\Python310\Lib\site-packages
    1. D:\1.Environment\Python\Python310\Lib>cd site-packages
    2. D:\1.Environment\Python\Python310\Lib\site-packages>dir
    3. 驱动器 D 中的卷是 Work
    4. 卷的序列号是 000D-8D77
    5. D:\1.Environment\Python\Python310\Lib\site-packages 的目录
    6. 2022/08/02 01:52 .
    7. 2022/08/02 01:52 ..
    8. 2022/08/02 01:52 152 distutils-precedence.pth
    9. 2022/08/02 01:52 pip
    10. 2022/08/02 01:53 pip-22.0.4.dist-info
    11. 2022/08/02 01:52 pkg_resources
    12. 2022/06/06 16:22 121 README.txt
    13. 2022/08/02 01:52 setuptools
    14. 2022/08/02 01:52 setuptools-58.1.0.dist-info
    15. 2022/08/02 01:52 _distutils_hack
    16. 2 个文件 273 字节
    17. 8 个目录 6,143,684,608 可用字节
    18. D:\1.Environment\Python\Python310\Lib\site-packages>

    %%%%%

    说一下 sys 中的 sys.path sys.argv

            sys.path 包含了 Python 解释器自动查找所需模块的路径的列表

            sys.path 列表里的路径分为三种:

    1. 第一种是当前执行脚本 是主动执行而不是被其她模块调用的脚本的所在路径 是列表中的第一个元素 若没有执行脚本 则是个空字符串
    2. 第二种是 Python 内置的标准库路径 PYTHONPATH
    3. 其她的是安装的第三方模块路径

            在 Python 启动时 sys.path 根据内建规则和 PYTHONPATH 变量进行初始化
            可以进行 append、insert、pop、remove 等各种列表相关的操作
            但通常都进行 append 操作
            在 PYTHONPATH 环境变量中增加相应的路径
            sys.path.append/自定义模块路径 这种方法是运行时修改 脚本运行后就会失效的

            sys.argv 获取命令行参数 返回值是 List

    列表的第一个元素是脚本名称
    第二个元素开始才是真正的参数

            示例:

    1. >>> import sys
    2. >>> print ( sys.argv )
    3. ['']
    4. >>>

            如果 test.py 脚本文件内容如下:

    1. import sys
    2. print ( sys.argv )

            执行命令如下:

    python3 test.py 521

            则输出如下:

    ['test.py', '521']

    %%%%%

    dir() 怎么查看可用方法

            还可以使用 dir() 查看指定模块中的可用方法!

            查看默认输出示例:

    1. C:\Users\byme>python
    2. Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>> dir()
    5. ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__pack
    6. age__', '__spec__']
    7. >>>

            查看 print 中可用的方法:

    1. >>> dir ( print )
    2. ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__form
    3. at__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_s
    4. ubclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '
    5. __qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr
    6. __', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
    7. >>>

    ——————————

    Python 包与库概念

            包就是存放多个模块的文件夹 其实本质上就是一个目录……

            一个大型的项目往往需要使用成百上千的 Python 模块
            如果将这些模块都堆放在一起肯定不好管理

            而且使用模块可以有效避免变量名或函数名重名引发的冲突
            但是如果模块名重复怎么办呢?
            因此才有了 包/Package 的概念

            什么是包呢?
            简单理解 包就是文件夹
            只不过在该文件夹下必须存在一个名为

    __init__.py

            的文件

            这对于 Python 2 来说是必须的
            而在 Python 3 中有没有 __init__.py 文件对包来说并不是必须的

            所以每个包的目录下都必须建立一个

    __init__.py

            的模块文件 可以是一个空模块 也可以写一些初始化代码 其作用就是告诉 Python 要将该目录当成包来处理

            注意 __init__.py 不同于其她模块文件

            此模块的模块名不是 __init__ 而是她所在的包名!
            例如在 settings 包中的 __init__.py 文件其模块名就是 settings

    %%%%%

    包概念总结

            Python 包:

    1.         包是一个包含多个模块的文件夹
    2.         她的本质依然是模块
    3.         因此包中也可以包含包
    4.         例如 我们安装了 numpy 模块之后可以在 Lib\site-packages 安装目录下找到名为 numpy 的文件夹
    5.         她就是安装的 numpy 模块 其实就是一个包

    %%%%%

    库概念总结

            Python 库:

    1.         相比模块和包来说库是一个更大的概念
    2.         例如在 Python 标准库中的每个库都有好多个包 而每个包中都有若干个模块

    ——————————

    Python 中使用 import 或 from-import 导入模块

            import 与 from-import 用法

            在 Python 中使用
    import
    from-import
        来导入相应模块

    %%%%%

    导入整个模块

            将整个 somemodule/模块 导入:

    import 模块

            示例:

    1. >>> import sys
    2. >>>

            或者这样将某个模块中的函数全部导入:

    from 模块 import *

    %%%%%

    只希望导入模块中指定的一部分

            从某个模块中导入 somefunction/某个函数 格式如下:

    from 模块 import 函数

            示例:

    1. >>> import sys # 之前导入 sys 过了
    2. >>> dir(sys) # 查看 sys 模块可用的方法函数
    3. ['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__intera
    4. ctivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__',
    5. '__stdin__', '__stdout__', '__unraisablehook__', '_base_executable', '_clear_ty
    6. pe_cache', '_current_exceptions', '_current_frames', '_deactivate_opcache', '_de
    7. bugmallocstats', '_enablelegacywindowsfsencoding', '_framework', '_getframe', '_
    8. git', '_home', '_xoptions', 'addaudithook', 'api_version', 'argv', 'audit', 'bas
    9. e_exec_prefix', 'base_prefix', 'breakpointhook', 'builtin_module_names', 'byteor
    10. der', 'call_tracing', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytec
    11. ode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'f
    12. loat_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_trac
    13. king_depth', 'getallocatedblocks', 'getdefaultencoding', 'getfilesystemencodeerr
    14. ors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount',
    15. 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info',
    16. 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'last_tr
    17. aceback', 'last_type', 'last_value', 'maxsize', 'maxunicode', 'meta_path', 'modu
    18. les', 'orig_argv', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'pla
    19. tlibdir', 'prefix', 'ps1', 'ps2', 'pycache_prefix', 'set_asyncgen_hooks', 'set_c
    20. oroutine_origin_tracking_depth', 'setprofile', 'setrecursionlimit', 'setswitchin
    21. terval', 'settrace', 'stderr', 'stdin', 'stdlib_module_names', 'stdout', 'thread
    22. _info', 'unraisablehook', 'version', 'version_info', 'warnoptions', 'winver']
    23. >>> from sys import __doc__ # 从 sys 模块中单独导入 __doc__ 函数
    24. >>>

    %%%%%

    还可以根据类名函数名导入

            语法如下:

    from 包或模块名 import 包或类或函数名_1, 包或类或函数名_2 , 包或类或函数名_N

    %%%%%

    从某个模块中导入多个函数

             还可以导入多个函数 语法如下:

    from 模块 import 函数_1, 函数_2, 函数_3, 函数_N

    %%%%%

    使用 as 为包名设置一个简称

            为什么需要简称 主要是为了容易区分

            语法如下:

    import 包名 as 简称

    %%%%%

    关于初始化调用模块可执行代码

            模块除了方法定义 一般还可以包括用来初始化这个模块可执行的代码

            她们只在第一次被导入时才会被执行

            一个模块被另一个程序第一次引入时 其主程序将运行

            若希望引入模块时其中的某些程序块不执行 可以借助 __name__ 属性使这些程序块仅在该模块自身运行时执行!

            示例:

    1. if __name__ == '__main__':
    2. print ( "程序自身在运行" )
    3. else:
    4. print ( "以模块方式运行" )

            测试结果如下:

    1. >>> if __name__ == '__main__':
    2. ... print ( "程序自身在运行" )
    3. ... else:
    4. ... print ( "以模块方式运行" )
    5. ...
    6. 程序自身在运行
    7. >>>

  • 相关阅读:
    ISP--Black Level Correction(黑电平矫正)
    深入研究一下mysql
    fegin 单客户端配置类方式设置配置
    全局异常捕获工具类
    MySQL 分库分表
    python做小游戏之一小迷宫游戏
    C语言力扣第48题之旋转图像。辅助数组
    Ubuntu22.04安装Git LFS
    WhatsApp个人号、Business号、API号到底有什么区别
    什么测试自动化测试?
  • 原文地址:https://blog.csdn.net/m0_67268286/article/details/126389340