import 模块名 (as 别名):
引入某一个.py文件
# 文件1 (demo1.py)
def add(a,b):
sum = a+b
return sum
# 文件2 (demo2.py)
import demo1
print(demo1.add(1,2))
#结果为: 3
from 模块名 import 指定函数 (as 别名)
引入某个模块中的某个方法 (不需要用文件名去调用)
# 文件1 (demo1.py)
def add(a,b):
sum = a+b
return sum
# 文件2 (demo2.py)
from demo1 import add
print(add(1,2))
#结果为: 3
from 模块名 import *:
引入某一个模块的所有方法 (不推荐使用)
# 文件1 (demo1.py)
def add(a,b):
sum = a+b
return sum
def copy(a,b):
c = a
a = b
b = c
return a
# 文件2 (demo2.py)
from demo1 import *
print(add(1,2))
print(copy(1,2))
#结果为: 3 2
可以在被调用的模块中 使用 __all__ = [] 来控制 * 代表的方法
默认是全部,,,如果__all__ 中只填写了一个函数名,则 * 也只代表这一个函数
可以通过as进行创建临时名称
例如
from test import add as a #则a() 其实使用的依旧是 add() 函数 import sys as a # 作用相同
模块的作用:
1.从文件级别组织程序,更方便管理
2.拿来主义,提高工作效率
如果要调用不在整个大包的外部模块,需要
import sys sys.path.index(0,"所添加的模块的绝对路径")
模块的寻找顺序:
内存中已加载的模块 ——> 内置模块 ——> sys.path路径中的其他模块
模块的一些函数方法:
__name__:
#作用:用来控制.py文件在不同的应用场景下执行不同的逻辑(或者是在模块文件中测试代码) if __name__ == '__main__':
每个一模块都有该方法,当值为 __main__ 的时候,是本程序在运行,否则就是别的程序再调用
# 文件名 demo.py if __name__ == '__main__': print('我是主程序') else: print("其他的调用我") # 文件名 demo2.py import demo2 # 结果: # 如果运行demo.py,运行结果是: 我是主程序 # 如果运行demo2.py, 运行结果是: 其他的调用我
dir(): 参数:模块名称
作用:可以返回模块内定义的所有方法名称,以一个字符串的形式返回
如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称
# 文件(demo.py) def add(): print("add") def asa(): print("asa") # 文件2(demo2.py) import demo2 print(dir(demo2)) 结果: #['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'asa']
包:
目录中只有包含一个 “__init__.py” 的文件才能成为包
相同 Java也是用 小数点进行分层
方式1: 导入子模块,使用时必须用全名才可以进行访问
如: import day3.demo1.test day3.demo1.test.add(1,2)
方式2:从某几层文件中导入某个文件
如: from day3.demo1 import test test.add(1,2)
方式3:
from day3.demo1.test import add add(1,2)