python文件的两种用途

python文件的两种用途

  • 编写好的一个python文件可以有两种用途:
    一:脚本,一个文件就是整个程序,用来被执行
    二:模块,文件中存放着一堆功能,用来被导入使用

  • python为我们内置了全局变量__name__,
    当文件被当做脚本执行时:__name__ 等于'__main__'
    当文件被当做模块导入时:__name__等于模块名

    作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
    if __name__ == '__main__':

    直观理解:
    对于当前运行的程序test.py而言,__name__ 变量的值是"__main__"。
    如果run.py调用了test.py,即import test,那么对test.py而言name变量的值是"test",对于run.py而言name变量的值是"main"。
    背后原因:
    有时我们写了可以直接被执行的模块(.py文件),但是在另一个程序中调用它时,我们其实只是想用一用里面写好的函数,而不是全都执行一遍。那么我们就可以把执行的部分放到if __name__ == '__main__' 中进行判断。
    如果if__name__ == '__main__' 为真,就说明我们是在直接执行这个模块,那么所有的操作都要运行一遍;但如果为假,就说明我们是引用了这个模块,只有在需要用到它的函数时,才会被调用执行。

x = 1


def f1():
    print('from f1')


def f2():
    print('from f2')


f1()
f2()

如果直接运行run.py会直接运行aaa.py中的f1()和f2(),但是如果我们在aaa.py中加上if __name__== '__main__:这句话,则可以防止运行run.py时执行f1()和f2()。因为当aaa.py被直接执行,即当做执行文件的时候__name__ == '__main__'; 在aaa.py被当做模块直接运行的时候__name__ == 'aaa'。由此可以让aaa.py在不同的场景下有着不同的用法。

# aaa.py

x = 1


def f1():
    print('from f1')


def f2():
    print('from f2')


if __name__ == '__main__':
    f1()
    f2()
posted @ 2020-01-30 22:52  RandySun  阅读(236)  评论(0编辑  收藏  举报