浅析python模块创建和from及import使用

python模块通过用python程序编写的.py文件即可创建,通过from及import语句导入模块来使用。
1 python模块创建1.1 python模块定义python模块是以.py为后缀的python程序文件。
1.2 python模块命名python模块名称在导入模块后变成变量名,所以模块命名遵循变量命名规则。
python变量赋值时,需用到变量名,变量命名需符合一定规则。
序号规则描述
1 书写规则:字母或下划线+任意字母或下划线或数字 以字母或下划线开头,之后只能接字母、下划线、数字
2 区分大小写 变量名s和s是两个不同的变量
3 禁止用保留字做变量名 变量名不能和保留字相同
1.3 python扩展模块使用外部语言(c、c++、java)创建的python模块,称为扩展模块。
导入扩展模块同python文件模块一样,用import导入。
2 python模块使用python模块首次导入,会执行搜索、编译(按需)、执行三个步骤,然后保存在sys.modules字典中。
2.1 import导入模块用法
import module1 [as identifier1] (, module2 [as identifier2])描述
python的import语句读取整个模块进行导入,import是隐性赋值语句。
import module1:模块名module1作用
作用描述
1 根据module1搜索模块
2 将模块对象赋值给module1
3 通过“module1.属性”的方式访问模块属性
as identifier1:
no描述
1 通过as给模块取别名,之后通过别名访问模块对象属性。
2 用as后,不可通过“模块原名”访问模块属性。
3 用as后,模块搜索路径存放的键为模块原名,而非别名。
module1, module2:
导入多个模块,通过逗号“,”分隔。
示例
# mod_1.pydef mod1print(val): print('在mod_1:{}'.format(val))# mod_2.pydef mod2print(val): print('在mod_2:{}'.format(val))# import 模块名,通过“模块名.属性”访问属性>>> import os>>> path=r'e:\\documents\\f盘'>>> s='梯阅线条'>>> os.chdir(path)>>> import mod_1>>> import mod_2>>> mod_1.mod1print(s)在mod_1:梯阅线条>>> mod_2.mod2print(s)在mod_2:梯阅线条# 模块导入后存在sys.modules字典中,键为模块名,值为模块路径>>> import sys>>> sys.modules['mod_1']>>> sys.modules['mod_2']# 下面示例需重启python idle后执行# 导入多个模块用逗号“,”分隔,as模块别名赋值模块对象>>> import os,sys>>> path=r'e:\\documents\\f盘'>>> s='梯阅线条'>>> os.chdir(path)>>> import mod_1 as md1,mod_2 as md2>>> md1>>> md2# 通过“别名.属性”访问模块对象属性>>> md1.mod1print(s)在mod_1:梯阅线条>>> md2.mod2print(s)在mod_2:梯阅线条# 用as后,不可通过“模块原名”访问模块属性>>> mod_1.mod1print(s)traceback (most recent call last): file , line 1, in mod_1.mod1print(s)nameerror: name 'mod_1' is not defined# 用as后,模块搜索路径存放的键为模块原名,而非别名>>> sys.modules['mod_1']>>> sys.modules['md1']traceback (most recent call last): file , line 1, in sys.modules['md1']keyerror: 'md1'2.2 from导入模块用法
from module import var1 ([as iden1](,var2 [as iden2]))描述
python的from语句导入模块指定变量名。使用时直接访问变量名,无需加模块名。
var1:变量名。
as iden1:给变量取别名,之后使用别名访问。
var1,var2:导入多个变量,使用逗号“,”分隔。
示例
# mod_1.pydef mod1print(val): print('在mod1print:{}'.format(val)) def mod1echo(val): print('在mod1echo:{}'.format(val))# from 模块名 import 变量名>>> import os,sys>>> path=r'e:\\documents\\f盘'>>> s='梯阅线条'>>> os.chdir(path)>>> from mod_1 import mod1print# from 导入模块存放在sys.modules字典>>> sys.modules['mod_1']# 直接访问变量名,不需加模块名>>> mod1print(s)在mod1print:梯阅线条# 不可访问未导入的变量>>> mod_1.mod1echo(s)traceback (most recent call last): file , line 1, in mod_1.mod1echo(s)nameerror: name 'mod_1' is not defined# 下面示例重启python idle后执行>>> import os>>> path=r'e:\\documents\\f盘'>>> s='梯阅线条'>>> os.chdir(path)# 导入多个变量,用逗号“,”分隔,as 变量别名赋值>>> from mod_1 import mod1print as m1print,mod1echo as m1echo# 通过变量别名访问模块属性>>> m1print(s)在mod1print:梯阅线条>>> m1echo(s)在mod1echo:梯阅线条# 不可通过变量原名访问模块属性>>> mod1echo(s)traceback (most recent call last): file , line 1, in mod1echo(s)nameerror: name 'mod1echo' is not defined2.3 from *导入模块用法
from module import *描述
import *:导入模块的全部顶层(全局)变量,可以直接访问模块属性。
示例
# mod_1.pydef mod1print(val): print('在mod1print:{}'.format(val)) def mod1echo(val): print('在mod1echo:{}'.format(val)) def mod1show(val): print('在mod1show:{}'.format(val))>>> import os>>> path=r'e:\\documents\\f盘'>>> s='梯阅线条'>>> os.chdir(path)>>> from mod_1 import *# import * 导入全部顶层变量,直接访问模块属性,不需模块名。>>> mod1print(s)在mod1print:梯阅线条>>> mod1echo(s)在mod1echo:梯阅线条>>> mod1show(s)在mod1show:梯阅线条

小米内部组织结构调整,笔记本电脑部并入手机部
乐视的钱到底都去哪里了?经济风波引发乐视金融用户担忧
某大型商显辐射发射整改案例
符合CMMI标准的组织如何有效地采用ASPICE
农业物联网在农业上有哪些应用?
浅析python模块创建和from及import使用
电商行业的发展趋势
为什么说我国人工智能的发展处于内忧外患的状态
简单的电路基础知识点总结
华为HiLink智能家居无线自供电开关有想象中的好用吗
5G智慧电网:让广大人民群众从“用上电”迈向“用好电”
华为发明专利授权量国内第一 总共2314件
当代人工智能的核心技术究竟是什么?
重庆金康新能源汽车公司,用800机器人上阵现实智能汽车厂自动化
液晶显示屏的ESD和EOS该如何处理
PCB爆板的原因
WiFi蓝牙模块HLK-B36自带BLE4.2+ 2.4G WiFi
“代工王国”转身, 郭台铭:投资大数据
iPhone8什么时候上市:还在期待iPhone8?华为概念机追求极致的“黑科技”的产物,iPhone8还要吗?
受疫情影响,福特使用VR远程协作技术进行车辆设计
s