模块简介

Python文件的后缀名是.py,一个Python文件称作一个模块,模块是函数的集合。

一个程序是由若干函数组成的,每个函数实现一个小功能,一组函数协同实现一个更大意义的功能。我们把这些协同实现了特定功能的函数封装为一个模块,然后起一个恰当的名称,方便自己和其他人使用。例如 os 模块实现操作系统相关功能,math 模块实现数学的相关功能。

模块导入与使用

使用一个模块之前,先用 import 关键词导入:

import 

导入之后,通过点语法调用模块中的函数:

模块名

模块的符号表

通过点语法能访问那些符号呢?使用 dir 函数查询模块的符号表:

print

思考一个问题:如何获得当前模块的符号表呢?

在当前模块中,其他模块是有名称的,通过点语法访问其他模块的符号。但是当前模块的名称我们是直接访问的,不需要点语法。当前模块对自身是匿名的,所以调用 dir 参数时不需要传参:

print

模块的名称

每个模块都有一个 __name__ 属性(注意前后是双下划线),该属性的值就是模块的名称,该属性是字符串类型。

import 

模块的名称就是文件名(去掉.py后缀)

模块的搜索路径

当我们使用 import 关键词导入模块时,Python 怎么知道去哪里寻找模块呢?在 sys.path 规定的路径中寻找:

import 

如果在此列表中的所有路径都找不到需要导入的模块,报错:

ModuleNotFoundError

模块分类

1 主模块

当我们执行一个叫做 abc.py 的 Python 脚本时,需要在控制台输入命令:

python3 

此时,abc 就是主模块,是程序在内存中构建的第一个模块,表示程序的入口。Python 规定,主模块的名称是 "__main__",与文件名无关。在 abc.py 中打印主模块名称:

print

所以,当我们希望某些代码只在当模块作为主模块时运行,作为被导入的模块时不运行,可以这样写:

if 

2 内建模块

当我们查询主模块的符号表时,会发现有一个 __builtins__

print

__builtins__ 是内建模块,Python 的设计者把常用功能封装在里面,Python 用户不需要导入任何模块就可以使用这些功能,用 dir 函数查看内建模块为我们提供了哪些功能:

print

内建模块的符号表:
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

按照规则,我们使用这些功能的时候需要加上模块名,但由于这些都是常用功能,Python 设计者非常贴心地为我们简化了内建模块的调用,我们可以直接写这些符号,不需要在前面加上模块名。

a 

3 标准模块

Python 设计者为我们提供了一系列的标准模块,实现了许多常用功能。当我们需要这些功能时,直接使用 import 关键词引入这些模块即可。

import 

Python 官网有所有标准模块的介绍,需要的朋友请前往:

Python 标准库 - Python 3.8.2 文档​docs.python.org

4 第三方模块

Python 社区拥有庞大的开发者社群,许多人为我们贡献了优秀的软件包,这些软件包都是免费的。如果有需要,请在你的项目中尽情使用吧!在Python 软件包索引网站可以查看所有免费的软件包:

PyPI · The Python Package Index​pypi.org

这个网站中所有的软件包都可以使用 pip 安装。

5 自建模块

自己开发的模块,未公开发布,仅限自己使用。

导入模块的顺序

为避免冲突,在脚本中约定俗成地按以下顺序导入模块:

标准模块 --> 第三方模块 --> 自建模块

模块与包

包是模块的集合,一个包通常有若干个模块组成。使用 import 关键词导入包:

import 

如果只需要使用包里的某个模块,可以只导入这个模块:

import 

包里含有子包的情况:

import 

给模块起别名

为了简化名称或看着顺眼,我们可以用 as 关键字给模块起别名

import 

import torch 找不到模块_15天Python入门-15-模块与包相关推荐

  1. linux下载tkinter模块,Linux升级Python提示Tkinter模块找不到解决

    一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python 2.6. (r266:, Feb , ::) [GCC ...

  2. import torch 找不到模块_Python零基础入门:关于Python模块与包的详细解读和使用...

    一.模块和包的定义 模块的定义:任何*.py 的文件都可以当作模块使用import 导入 包的定义:包含一个__init__.py和其他模块.其他子包的一个目录 实际项目中,所谓的包和模块分别代表什么 ...

  3. python导入自定义模块_ubuntu下Python导入自定义模块的方法

    ubuntu下Python导入自定义模块的方法 当在python程序中导入自定义模块时,若出现"Import Error:no module named xxx"表明系统在pyth ...

  4. 关于python中requests模块导入问题-python中requests模块的使用方法

    本文实例讲述了python中requests模块的使用方法.分享给大家供大家参考.具体分析如下: 在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合 ...

  5. python shelve模块_说说 Python 的 shelve 模块

    利用 Python 的 shelve 模块, 可以将程序中需要保存的数据,以二进制放入 shelf 文件中.另一个程序就可以读取 shelf 文件,用于业务逻辑.也就是说 shelve 模块可以实现数 ...

  6. python ssh登陆模块_使用python的Paramiko模块登陆SSH

    paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块可以方便的实现ssh登录,并执行命令. 1. pa ...

  7. python安装docx模块_安装Python的docx模块

    安装Python的docx模块 在执行进行自动化测试的时候,很多时候我们其实不会一直关注这个测试的,很多时候我们只需要关注一个结果,与我们的预期是否相互符合就可以了. 所以我们只需要把预期结果,和实际 ...

  8. 关于OpenCV for Python入门-DNN模块实现人脸检测

    OpenCV在OpenCV增加了DNN模块,DNN模块可以加载预先训练好的Caffe/tensorflow等模型数据,基本支持所有主流的深度学习框架训练生成与导出模型数据加载. 下面用到的SSD人脸检 ...

  9. python入门之模块

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句.模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配 ...

  10. python 入门学习---模块导入三种方式及中文注释

    Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个可以交互使用,或者从另一Python 程序访问的代码段.只要导入了一个模块,就可以引用 ...

最新文章

  1. MySQL之主从切换
  2. 马斯克员工参与新冠研究,论文登上Nature子刊
  3. java怎么导入别人的代码_怎么用eclipse将图标导入到java代码中
  4. 【Splay】洛谷3372 【模板】线段树 1
  5. php html自动打开新页面大小,HTML_html 用超链接打开新窗口其可控制窗口属性,1、html超链接打开的窗口大小 - phpStudy...
  6. SAP 金额在表中的存储及货币转换因子
  7. 《深入理解Hadoop(原书第2版)》——2.6本章小结
  8. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)
  9. 元素属性的添加删除(原生js)
  10. 用c语言求最大公约数的流程图,如何用c语言求最大公约数和最小公倍数
  11. 移动端h5监听浏览器返回操作(目前在react项目中用到)
  12. 泛型 (Generics)一定是最易懂简单的
  13. MySQL 8.0.16安装(win64)
  14. xsmax是大黑边?_苹果iPhone11和xsmax,8p x xr xs怎么选?干货分享!
  15. ArcCatalog基本操作
  16. CrazyTalk Animator 3 for Mac破解版永久激活方法附破解补丁
  17. 高中生都能看懂的卡方检验
  18. vulnhub靶机_WHO WANTS TO BE KING: 1
  19. EDK2开发中error C2220: 警告被视为错误 - 没有生成“object”文件的解决方法!
  20. [×××.launch]is neither a launch file in package [××] nor is [××] a launch file name解决办法

热门文章

  1. Nginx ~模块详解~
  2. 更改远程桌面默认端口3389及删除远程桌面连接历史记录
  3. 微信小程序报错:invalid credential, access_token is invalid or not latest
  4. LINUX:lpr不能打印,可以试试lp
  5. undefined reference to `gdk_monitor_get_scale_factor/gtk_widget_get_scale_factor‘
  6. org.gradle.api.tasks.compile.CompileOptions.setBootClasspath
  7. 梦笔记20211017
  8. MAC编译出错:Undefined symbols for architecture x86_64: “_CFRelease“, referenced from:
  9. 近来很多人通过这个博文加关注,为何?
  10. 编程基本功:如果可能,不用if,尽量使用switch