一.

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

因此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

一. python包的使用 随笔 第1张

执行文件

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

a.xi.bb()

b.aa.aa()
# 111111111111111111111111111111111111111

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

    目录结构

    一. python包的使用 随笔 第2张

一. python包的使用 随笔 第3张

api   cmd   db  目录下 文件

一. python包的使用 随笔 第4张

一. python包的使用 随笔 第5张

一. python包的使用 随笔 第6张

一. python包的使用 随笔 第7张

 包1.py执行

一. python包的使用 随笔 第8张

 

 

 

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

api  api  cmd   db  log   目录下 文件

一. python包的使用 随笔 第9张

 

一. python包的使用 随笔 第10张

一. python包的使用 随笔 第11张

一. python包的使用 随笔 第12张

一. python包的使用 随笔 第13张

一. python包的使用 随笔 第14张

包2.py 执行文件

一. python包的使用 随笔 第15张

 

 

 

 

        

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄