当前位置:   article > 正文

python中模块和包_python模块和包

python模块和包

目录

1.模块:

2.导入

2.1导入全部

2.1.1.导入全部模块语法格式一:

2.1.2导入全部模块语法格式二:

2.2局部导入

2.2.1 

2.2.2

3.模块搜索路径

4. dir() 函数

例:

5.常见的模块

6.包

6.1包

6.2如何去导入包下的模块:

6.3使用 from package import * 时会发生什么?


1.模块:

退出 Python 解释器后,再次进入时,之前在 Python 解释器中定义的函数和变量就丢失了。
因此,编写较长程序时,建议用文本编辑器代替解释器,执行文件中的输入内容,这就是编写 脚本 。
随着程序越来越长,为了方便维护,最好把脚本拆分成多个文件。编写脚本还一个好处,不同程序调用同一个函数时,
不用每次把函数复制到各个程序。

为实现这些需求,Python 把各种定义存入一个文件,在脚本或解释器的交互式实例中使用。
这个文件就是 模块 ;模块中的定义可以 导入 到其他模块或 主 模块
(在顶层和计算器模式下,执行脚本中可访问的变量集)。

主模块:当你运行一个py文件时,这个py文件对应的模块就是一个主模块,

模块是包含 Python 定义和语句的文件。其文件名是模块名加后缀名 .py ,
例文件名为python.py则模块名为python, 后缀名为.py。
在模块内部,通过全局变量 __name__ 可以获取模块名(即字符串)。

2.导入

2.1导入全部

2.1.1.导入全部模块语法格式一:

import module_name(模块名)

2.1.2导入全部模块语法格式二:

from module_name import*  
    这种方式会导入所有不以下划线(_)开头的名称。大多数情况下,
不要用这个功能,这种方式向解释器导入了一批未知的名称,可能会覆盖已经定义的名称。
区别: 
当使用第一种方法调用模块内部函数时方法为  module_name.part_name()
当使用第二种方法调用模块内部函数时方法为  part_name()     

导入模块实质: 执行导入模块

2.2局部导入

导入模块中的部分,语法格式:

2.2.1 

from module_name import part_name(变量, 函数, 类)
此时我们还可以重命名函数
from module_name import part_name(变量, 函数, 类) as pa
调用时:
  pa()

2.2.2

全部导入之后进行调用(import module_name(模块名))
module_name.part_name()      # (函数) 

3.模块搜索路径

当一个名为 spam 的模块被导入时,解释器首先搜索具有该名称的内置模块。
这些模块的名字被列在 sys.builtin_module_names 中。如果没有找到,
它就在变量 sys.path 给出的目录列表中搜索一个名为 spam.py 的文件, sys.path 从这些位置初始化:
  1. import sys
  2. print(sys.builtin_module_names)
  3. print(sys.path)
  1. '''
  2. builtin_module_names
  3. ('_abc', '_ast', '_bisect', '_blake2', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022',
  4. '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_contextvars', '_csv', '_datetime',
  5. '_functools', '_heapq', '_imp', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec',
  6. '_opcode', '_operator', '_pickle', '_random', '_sha1', '_sha256', '_sha3', '_sha512', '_signal',
  7. '_sre', '_stat', '_statistics', '_string', '_struct', '_symtable', '_thread', '_tracemalloc',
  8. '_warnings', '_weakref', '_winapi', '_xxsubinterpreters', 'array', 'atexit', 'audioop', 'binascii',
  9. 'builtins', 'cmath', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt',
  10. 'nt', 'sys', 'time', 'winreg', 'xxsubtype', 'zlib')
  11. sys.path
  12. ['D:\\python_code\\modle_learning', # 运行.py文件的目录
  13. 'D:\\python_code',
  14. 'D:\\AXXZX\\Python\\pycharm\\PyCharm .professional\\PyCharm 2022.3.3\\plugins\\python\\helpers\\pycharm_display',
  15. 'D:\\AXXZX\\Python\\python\\python310.zip',
  16. 'D:\\AXXZX\\Python\\python\\DLLs',
  17. 'D:\\AXXZX\\Python\\python\\lib',
  18. 'D:\\AXXZX\\Python\\python',
  19. 'D:\\AXXZX\\Python\\python\\lib\\site-packages',
  20. 'D:\\AXXZX\\Python\\pycharm\\PyCharm .professional\\PyCharm 2022.3.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend'
  21. ] # pycharm路径
  22. '''

4. dir() 函数

内置函数 dir() 用于查找模块定义的名称。返回结果是经过排序的字符串列表:

例:

  1. print(dir(str))
  2. '''
  3. ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',
  4. '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__',
  5. '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',
  6. '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
  7. '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
  8. 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs',
  9. 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal',
  10. 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle',
  11. 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix',
  12. 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
  13. 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper',
  14. 'zfill']
  15. '''

5.常见的模块

copy:    拷贝模块
sys:     和python解释器交互的
os:      和操作系统交互的
random:  随机数
math:    数学模块
re: regular expression :正则表达式
导入模块一般在文件的顶部   

6.包

6.1包

包是模块的集合,为它底下的模块提供命名空间

6.2如何去导入包下的模块:

  1. import package.module_name
  2. from package import module_name
  3. from package.module_name import part_name(局部)(变量, 函数, 类)
包是模块的集合,因此包中还可以包含子包

6.3使用 from package import * 时会发生什么?

包和目录的区别:
    最大的区别是包中含有__init__.py文件
    若给一个目录加入__init__.py文件,则该目录就会成为包 
如果包的 __init__.py 代码定义了列表 __all__,运行 from package import * 时,
它就是用于导入的模块名列表。
  1. from mypack import *
  2. print(modle_A.dataA)
  3. print(modle_B.dataB)
  4. print("mypack")
  5. '''
  6. A
  7. B
  8. 1
  9. 2
  10. mypack
  11. '''

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/983078
推荐阅读
相关标签
  

闽ICP备14008679号