模块与包
所谓模块和包,表现出来的就是python文件在文件夹中的目录结构 模块:一个python文件 包:包含python文件的文件夹 (包中必须含有一个init.py文件) (包中可以嵌套其他包) *(包、模块的名称不能冲突,不能用关键字)
导入
导入模块
L— import
导入模块
import sys
L = sys.path #使用模块导入的方法需要使用成员运算符
#sys.path该属性储存了PYTHONPATH列表
for i in L:
print(i)
L— import… as…
导入模块并重新命名模块
import sys as rename # 将sys重新命名为rename
L = rename.path
for i in L:
print(i)
导入包
L— from… import…
导入包,并从包中导入模块
文件目录 | |
---|---|
Amod.py (hibari包中的模块) |
def func(): print(“this is Amod”) |
Bmod.py (hibari包中的模块) |
def func(): print(“this is Bmod”) |
play.py (当前操作的文件,或者控制台) |
from hibari import Amod from hibari import Bmod Amod.func() Bmod.func() #==================== #output this is Amod this is Bmod |
L— from… import *
导入包,并导入所有模块
注意: import*时,只会导入init.py文件中 all属性列表中包含的模块名, 不在all属性中的模块是不会导入的
文件目录 | |
---|---|
init.py (hibari包中的初始模块) |
all = [“Amod”, “Bmod”] |
Amod.py (hibari包中的模块) |
def func(): print(“this is Amod”) |
Bmod.py (hibari包中的模块) |
def func(): print(“this is Bmod”) |
play.py (当前操作的文件,或者控制台) |
from hibari import * |
Amod.func()
Bmod.func()
#====================
#output
this is Amod
this is Bmod |
导入子包
L— form A.B import…
按照目录结构,用成员运算符“.”隔开即可
from hibari.inside_page import Amod
模块
模块名属性:name
一个py文件的属性,主要是用来区分模块和主程序的 注意: 0、无论是导入还是作为主程序,整个文件都是会被运行的
1、当*.py文件直接作为程序运行时: (name属性储存的是字符串”main“) name =”main“
2、当*.py文件作为模块导入时: (name属性储存的是文件名)
name =”*“
“__name__”的用途
#=============================
if __name__ =="__main__": #当文件作为主程序时,运行这里
print("该文件是模块,请导入主程序") #相当于C++的 void main()部分
else: #当文件作为模块时,运行这里
print("模块成功导入")
print("模块名为:",__name__)
文件名 | 文件内容(代码) | 直接运行文件输出结果(Ouput) |
---|---|---|
Amod.py (hibari包中的模块) |
def func(): print(“文件Amod的name属性:”, name) func() |
文件Amod的name属性:mian |
play.py (当前操作的文件,或者控制台) |
import Amod |
Amod.func() | 文件Amod的name属性:Amod
文件Amod的name属性:Amod |
| | | 提示:
在VS中:右键可以直接运行文件
在控制台中:输入命令 运行文件 |
文件位置属性:file
这个属性可以返回,当前模块的文件位置
import pymel.core
pymel.core.__file__
模块查询:dir( )
这个方法可以查询模块内的所有内容
import sys
L = dir(sys)
for i in L:
print(i)
作用域
特殊属性:xxx
头尾各有两个下划线的是特殊属性 能直接被引用,但有特殊用途
例如:name 这个属性会根据当前文件是如何运行的产生不同的值
私有属性:__xxx
头部有1到2个下划线的是私有属性(private) 只能被当前文件使用,不应该被直接引用
路径
查询路径:sys.path
这个属性储存一下文件路径,python会从这些路径中去寻找包和模块 (一般默认主程序的位置就是其中一个路径)
import sys
for i in sys.path:
print(i)
下面分别是VS2017、Blender、Maya的path
添加路径:sys.path.append( )
这个方法可以添加搜索路径
注意**:**程序关闭后重启会失效
import sys
for i in sys.path:
print(i)
sys.path.append("E:\Hibari\Scripts")
print("\n")
for i in sys.path:
print(i)
环境变量:PYTHONPATH
*(也可以称为系统变量)
如果希望一次修改,每次都可以调用到这个模块,可以修改环境变量PYTHONPATH *(原理:在打开解释器时,环境变量PYTHONPATH内的路径会被自动添加到sys.path中)
注意: 1、在Python打开后,再修改PYTHONPATH是不起作用的 2、PYTHONPATH只能在Python启动前修改