name == ‘main

作用:

让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

  • 当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;
  • 当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

    实例:

    1. #module.py
    2. def main():
    3. print("hello word")
    4. if __name__ == '__main__':
    5. main()
  1. #test.py
  2. import modle
  3. main()
  4. #结果
  5. hello word
  6. 注意:main()函数值执行了一遍,modle.py中的main()是没有执行的,因为当modle.py被引用过来,
  7. 此时__name__ == '__main__' 的值为False

file

作用:

当前文件的绝对路径

返回文件所在目录

  1. c:/test/test.py
  2. import os
  3. print(__file__)#c:/test/test.py
  4. print(os.path.dirname(__file__))#c:/test

Django中的BASE_DIR

__XXX__ - 图1

  1. #例如这个项目在D盘
  2. #D:A
  3. import os
  4. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  5. os.path.abspath(__file__) #D:A/A/settings.py
  6. os.path.dirname(os.path.abspath(__file__)) ##D:A/A
  7. os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #D:A

all

作用:

定义外部访问接口

实例

image.png
init

  1. from .utlis import *
  2. __all__=['run1','run2']

utlis

  1. def run1():
  2. return "run1"
  3. def run2():
  4. return "run2"
  5. def run3():
  6. return "run3"

test

  1. from A.B import *
  2. print(run1()) >>>run1
  3. print(run2()) >>>run2
  4. print(run3()) >>>语法错误
  5. 如果这么定义了,还是要用run3,怎么办?
  6. from A.B import run3
  7. print(run3()) >>>run3