Python3.7.4入门-4模块
4 模块
Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们。这样的文件被称作 模块 ;模块中的定义可以 导入 到其它模块或者 主 模块
模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py
。在一个模块内部,模块名(作为一个字符串)可以通过全局变量 __name__
的值获得
4.1 import
创建fibo.py文件
# Fibonacci numbers moduledef fib(n): # write Fibonacci series up to na, b = 0, 1while a < n:print(a, end=' ')a, b = b, a+bprint()def fib2(n): # return Fibonacci series up to nresult = []a, b = 0, 1while a < n:result.append(a)a, b = b, a+breturn result
现在进入Python解释器,并用 import 命令导入该模块:
在当前的符号表中,这并不会直接进入到定义在 fibo
函数内的名称;它只是进入到模块名 fibo
中。可以用模块名访问这些函数:
import fibo
>>> fibo.fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
- import 语句有一个变体,它可以把名字从一个被调模块内直接导入到现模块的符号表里
>>> from fibo import fib, fib2
>>> fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
- 如果模块名称之后带有
as
,则跟在as
之后的名称将直接绑定到所导入的模块。
>>> import fibo as fib
>>> fib.fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377>>> from fibo import fib as fibonacci
>>> fibonacci(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
- 出于效率的考虑,每个模块在每个解释器会话中只被导入一次。因此,如果你更改了你的模块,则必须重新启动解释器, 或者,如果它只是一个要交互式地测试的模块,请使用 importlib.reload() 例如
import importlib; importlib.reload(modulename)
。
4.2 模块搜索路径
当一个名为 spam
的模块被导入的时候,解释器首先寻找具有该名称的内置模块。如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 spam.py 的文件
4.3 dir() 函数
内置函数 dir() 用于查找模块定义的名称。 它返回一个排序过的字符串列表
- 它列出所有类型的名称:变量,模块,函数,等等。
- 不会列出内置函数和变量的名称。如果想要这些,它们的定义是在标准模块 builtins 中:
4.4 包-模块集合
包是一种通过用“带点号的模块名”来构造 Python 模块命名空间的方法。 例如,模块名 A.B
表示 A
包中名为 B
的子模块。
sound/ Top-level package__init__.py Initialize the sound packageformats/ Subpackage for file format conversions__init__.pywavread.pywavwrite.pyaiffread.pyaiffwrite.pyauread.pyauwrite.py...effects/ Subpackage for sound effects__init__.pyecho.pysurround.pyreverse.py...filters/ Subpackage for filters__init__.pyequalizer.pyvocoder.pykaraoke.py...
包的用户可以从包中导入单个模块,例如:
import sound.effects.echo
这会加载子模块 sound.effects.echo
。但引用它时必须使用它的全名。
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
导入子模块的另一种方法是
from sound.effects import echo
这也会加载子模块 echo
,并使其在没有包前缀的情况下可用,因此可以按如下方式使用:
echo.echofilter(input, output, delay=0.7, atten=4)
- 必须要有
__init__.py
文件才能让 Python 将包含该文件的目录当作包。 这样可以防止具有通常名称例如string
的目录在无意中隐藏稍后在模块搜索路径上出现的有效模块。 在最简单的情况下,__init__.py
可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__
变量 - 请注意,当使用
from package import item
时,item可以是包的子模块(或子包),也可以是包中定义的其他名称,如函数,类或变量。import
语句首先测试是否在包中定义了item;如果没有,它假定它是一个模块并尝试加载它。如果找不到它,则引发 ImportError 异常。 - 相反,当使用
import item.subitem.subsubitem
这样的语法时,除了最后一项之外的每一项都必须是一个包;最后一项可以是模块或包,但不能是前一项中定义的类或函数或变量。 - 使用
from package import specific_submodule
没有任何问题! 实际上,除非导入的模块需要使用来自不同包的同名子模块,否则这是推荐的表示法。
Python3.7.4入门-4模块相关推荐
- python3爬虫入门教程-总算懂得python3.4爬虫入门教程
Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python3.4爬虫入门教程 环境配置:下载Pytho ...
- python3入门与进阶笔记_我的Python3萌新入门笔记
Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...
- python3萌新入门笔记_我的Python3萌新入门笔记
Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...
- python入门指南-python3.6.0入门指南(官方版).pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Python python3.6.0入门指南(官方版).pdf7 ...
- python入门指南小说免费阅读-python3.6.0入门指南(官方版).pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Python python3.6.0入门指南(官方版).pdf7 ...
- python3爬虫入门教程-Python3爬虫学习入门教程
本文实例讲述了Python3爬虫相关入门知识.分享给大家供大家参考,具体如下: 在网上看到大多数爬虫教程都是Python2的,但Python3才是未来的趋势,许多初学者看了Python2的教程学Pyt ...
- python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装
!!!首先建议在Windows下安装 因为很方便!!! gmpy2是解密RSA时所用脚本的一个模块python下输入 import gmpy2 ,提示 Traceback (most recent ...
- Python3——多线程之threading模块
Python3--多线程之threading模块 目录 Python3--多线程之threading模块 Threading模块的对象 Threading模块的Thread类 queue模块(线程间通 ...
- python3数据科学入门与实战_Python3学习之Python3数据科学入门与实战视频教程
Python3学习之Python3数据科学入门与实战视频教程 Python3数据科学入门与实战 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开数据跟踪,本课程通过Nu ...
最新文章
- java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
- 计算机系统基础:计算机性能评价知识笔记
- sys.stdin.read和raw_input函数
- uniapp 统计_“uni统计”震撼来袭 - 1份报表,掌握全景数据(App及各种小程序)
- SQLite数据库---ListView控件之商品展示案例
- 深度学习模型压缩方法
- python——sort方法、sorted函数——排序
- 写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
- 分布式ID生成器解决方案
- 主板 稳定测试软件,拷机必不可少 编辑推荐几款稳定性测试软件
- windows无法格式化u盘_U盘修复无法格式化的解决方法
- 怎么用软件测试iPad,Apple:如何在iphone、ipad上安装一些常用命令行命令
- 力叩经典题--俩数之和
- bcm5396交换机级联配置_工业以太网交换机的专业术语汇总
- 用malloc动态申请一个二维数组的三种方法
- 二、单链表的头插法建表和尾插法建表
- 孤独后厂村,IT人百态:30万互联网人跳不出的中国硅谷
- 设计模式(17)----中介者模式
- HMC5883L地磁传感器驱动
- h5微信js-sdk分享接口php,H5 微信JSSDK自定义分享代码模板