一. python包的使用

一.

,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。

因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main':

下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

1. __name__=='__main__':

def aa():
    print("111111")
cc=10000

def lo():
    print("222222222222222222222")
print(__name__)
# __main__
# 当我们执行这个模块的时候 __name__=='__main__'
# 当我我们去执行其他模块 在其他模块中引用这个模块的时候 __name__=="模块名字"
if __name__=='__main__':
       lo()
       aa()
       print(cc)

# 222222222222222222222
# 111111
# 10000

 2. module  from.....import ...       from.....import  *

这是module.py文件

# 一个.py就是一个模块

def sayGood():
    print("my name is veary good")


def sayNice():
    print("my name is veary good")

def sayHandsome():
    print("my name is veary good")
t1=1000000000000000
这是执行文件aa.py

"""
           方法一

import  module
# 自定义模块  后面不加.py后缀
# 注意 一个模块只会引入一次 不管你执行了 多次 import 防止模块多次引入
# 使用模块中的内容:
#        格式: 模块名 函数名/变量
module.sayHandsome()   # my name is veary good
module.sayGood()      # my name is veary good
module.sayNice()     # my name is veary good
print(module.t1)     # 1000000000000000

# 引用函数模块
sayHandsome()

sayGood()

sayNice()

"""

""" 方法二 from.......import*语句 # 作用:把一个模块中所有的内容导入 当前命名空间 # from module import *#最好不要过多使用 sayGood() """ # 方法三 # from.......import语句 # 作用:从模块中导入一个指定的部分到当前命名空间 # 格式: from module import name[,[name2]] # 意思从modul这个模块里导入那个功能模块 from module import sayGood ,sayNice,sayHandsome # 程序内容的函数可以将模块中的同名函数覆盖 # def sayGood(): # print("*********************") sayGood() # my name is veary good sayNice() # my name is veary good sayHandsome() #my name is veary good

3. __init__.py

思考: 如果不同的人编写的模块同名怎么办
解决: 为了解决模块命名的冲突 引入了按目录来组织模块的方法 这个模块称为包
特点: 引入了包以后 只要顶层的包不与其他人发生冲突 那么模块都不会与别人的发生冲突

Python中的包
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py
用于标识当前文件夹是一个包。
考虑一个在 package_runoob 目录下的 runoob1.py

a目录下的aa.py

执行文件

# runoob2.py、__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:
import a.aa
import a.xi
a.aa.sayGood()  
# 333333333333333333333333333330000000

a.xi.bb()

b.aa.aa()
# 111111111111111111111111111111111111111

4. 相对路径包   这种不能在包里面使用 只能在外面使用

    目录结构

    

api   cmd   db  目录下 文件

 包1.py执行

 5. 绝对路径包   优点可以随意移动包 对应的 dir2目录包

api  api  cmd   db  log   目录下 文件

包2.py 执行文件

        

猜你喜欢

转载自www.cnblogs.com/Sup-to/p/10860048.html
今日推荐