组织代码的方式:把很多函数分组,分别放到不同的文件中
在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)
-------------------------调用模块时的路径,以当前运行模块所在路径为基础-------------------------------
一级文件(运行文件):

mud游戏代码python mud python_python

mud游戏代码python mud python_python_02

# 寻找上一阶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

二级文件(一级文件调用的文件):

mud游戏代码python mud python_python

mud游戏代码python mud python_python_02

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

三级文件(二级文件调用的文件):

mud游戏代码python mud python_python

mud游戏代码python mud python_python_02

print("hello world")


print(__name__)             # 结果:my_package01.my_package01.cal  当从bin执行文件调用该文件时,就是此结果。

def add(x,y):
    return x+y

cal