组织代码的方式:把很多函数分组,分别放到不同的文件中
在Python中,一个.py文件就称为一个模块(Mudule);
好处:1、提高了代码的可维护性
2、编写代码不必从零开始,当一个模块编写完成,可以在其他地方引用
3、可以避免函数名和变量名冲突,但尽量不要与内置函数名字冲突
模块一共分三种:
- python标准库
- 第三方模块
- 应用程序自定义模块
Python中:包(Package)
包: 普通文件夹中有__init__.py文件;
普通文件夹: 没有__init__.py文件;
调用包就是执行包下的__init__.py文件
----------------------------模块导入方法:--------------------------
import time # 通常情况下:import 先把time模块中的除函数外的代码执行一遍,然后再去执行time模块中的、当前调用的函数。
# 例如调用time模块中的sleep()方法:
# 1、import 语句
import time
time.sleep(1)
# 2、from…import 语句
from time import sleep
sleep(1)
# 3、from…import* 语句 (不推荐)
from time import *
sleep(1)
-------------------------调用模块时的路径,以当前运行模块所在路径为基础-------------------------------
一级文件(运行文件):
# 寻找上一阶py文件所在地址,并调用
import sys,os
################### 绝对路径 寻找到上一个文件所在路径 ####################
# 例如:D:\user\....\my_package\bin\bin.py 想找到my_package路径下的py文件,方法如下:
BASE_DIR=os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
# 如果只写到这里,在python中执行,是定位到了my_package路径下了,但是在电脑系统终端上运行时,是查不到的;
# 进一步优化:
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
# abspath --- 绝对路径
# 这样在系统终端上或者python中都可以执行了
# from my_package01第三方 import cal
# print(cal.add(1,2)) # 直接调用my_package01 包中的cal模块
from my_package01 import main
if __name__=="__main__": # 当有人把当前py文件作为模块,调用并调试某些功能时,可以防止其运行该模块下的主程序。
main.Amain() # 所以,一般写好的调用程序,养成习惯,前面记得加上这句,防止掉坑!!!!
main.Bmain()
main.Cmain()
print(__file__) # E:/Python+AI/newmet/07_模块/01_模块调用操作_基础/my_Package01/bin.py
print(BASE_DIR) # E:\Python+AI\newmet\07_模块\01_模块调用操作_基础
print(__name__) # 结果:__name__
# 上面使用
# __name__ :1、当其在执行文件中时,它就== "__main__"
# 2、当其在被调用模块中时,它就是被调用模块的路径
# (当bin调用cal模块时,cal中输出的print(__name__)结果为my_package01.my_package01.cal)
bin
二级文件(一级文件调用的文件):
from my_package01.my_package01 import cal # 建议用这种
def Amain():
print(cal.add(1,2))
from my_package01.my_package01.cal import add
def Bmain():
print(add(3,4))
from my_package01 import my_package01
def Cmain():
print(my_package01.cal.add(8,4))
main
三级文件(二级文件调用的文件):
print("hello world")
print(__name__) # 结果:my_package01.my_package01.cal 当从bin执行文件调用该文件时,就是此结果。
def add(x,y):
return x+y
cal