Python-25_模块-01_调用基本操作、路径
组织代码的方式:把很多函数分组,分别放到不同的文件中
在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)
二级文件(一级文件调用的文件):
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))
三级文件(二级文件调用的文件):
print("hello world") print(__name__) # 结果:my_package01.my_package01.cal 当从bin执行文件调用该文件时,就是此结果。 def add(x,y): return x+y