name == ‘main‘
作用:
让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行
- 当.py文件被直接运行时,
if __name__ == '__main__'
之下的代码块将被运行; - 当.py文件以模块形式被导入时,
if __name__ == '__main__'
之下的代码块不被运行。实例:
#module.py
def main():
print("hello word")
if __name__ == '__main__':
main()
#test.py
import modle
main()
#结果
hello word
注意:main()函数值执行了一遍,modle.py中的main()是没有执行的,因为当modle.py被引用过来,
此时__name__ == '__main__' 的值为False
file
作用:
返回文件所在目录
c:/test/test.py
import os
print(__file__)#c:/test/test.py
print(os.path.dirname(__file__))#c:/test
Django中的BASE_DIR
#例如这个项目在D盘
#D:A
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.path.abspath(__file__) #D:A/A/settings.py
os.path.dirname(os.path.abspath(__file__)) ##D:A/A
os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #D:A
all
作用:
实例
init
from .utlis import *
__all__=['run1','run2']
utlis
def run1():
return "run1"
def run2():
return "run2"
def run3():
return "run3"
test
from A.B import *
print(run1()) >>>run1
print(run2()) >>>run2
print(run3()) >>>语法错误
如果这么定义了,还是要用run3,怎么办?
from A.B import run3
print(run3()) >>>run3