目录

* import 模块名(掌握)
<https://www.cnblogs.com/nickchen121/p/10802052.html#import-模块名掌握>
* from 模块名 import 具体的功能(掌握)
<https://www.cnblogs.com/nickchen121/p/10802052.html#from-模块名-import-具体的功能掌握>
* import和from...import...的异同(掌握)
<https://www.cnblogs.com/nickchen121/p/10802052.html#import和from...import...的异同掌握>
一般使用import和from...import...导入模块。

以下述spam.py内的文件代码为例。
# spam.py print('from the spam.py') money = 1000 def read1(): print('spam模块:',
money) def read2(): print('spam模块') read1() def change(): global money money = 0
import 模块名(掌握)
# run.py import spam # from the spam.py import spam
import首次导入模块发生了3件事:

* 以模块为准创造一个模块的名称空间
* 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
* 在当前执行文件中拿到一个模块名
模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址
# run.py import spam as sm money = 111111 sm.money sm.read1() # 'spam模块:1000'
sm.read2 sm.change() print(money) # 1000
导入多个模块
import spam, time, os # 推荐使用下述方式 import spam import time import os
from 模块名 import 具体的功能(掌握)
# run.py from spam import money money = 10 print(money) # 10
from...import...首次导入模块发生了3件事:

* 以模块为准创造一个模块的名称空间
* 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
* 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
* 优点:不用加前缀,代码更加精简
* 缺点:容易与当前执行文件中名称空间中的名字冲突
导入文件内所有的功能:
# spam.py __all__ = ['money', 'read1'] # 只允许导入'money'和'read1' # run.py from
spam import * # 导入spam.py内的所有功能,但会受限制于__all__
import和from...import...的异同(掌握)

相同点:

* 两者都会执行模块对应的文件,两者都会产生模块的名称空间
* 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点

* import需要加前缀;from...import...不需要加前缀

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信