if else在c语言中是什么意思(if)
每当Python解释器读取源文件时,它都会做两件事:
- 它设置了一些特殊变量,例如__name__,然后
- 它执行文件中找到的所有代码。
假设代码在一个叫做foo.py的文件中。
print("beforeimport")
importmath
print("beforefunctionA")
deffunctionA():
print("FunctionA")
print("beforefunctionB")
deffunctionB():
print("FunctionB{}".format(math.sqrt(100)))
print("before__name__guard")
if__name__=='__main__':
functionA()
functionB()
print("after__name__guard")
当Python解释器读取源文件时,它首先会定义一些特殊的变量。比如__name__虽然它长得很奇怪,前面和后面都有一个下划线_,但是记得变量命名的规则嘛?下划线_是可以出现在变量首字母的。所以,__name__仍然是一个变量,只不过,是解释器自己定义的。
2.1 作为主程序运行当我们在命令行中使用python foo.py,或者直接在ide(比如pycharm)图形界面里点运行foo.py,那么这时候,foo.py就是作为主程序运行的。
此时: Python解释器会直接给_name_变量赋值为"_main_"
2.2 作为导入的模块运行如果有另一个程序,叫main.py,它里面的代码是这样的。
importfoo
那么如果我们在命令行中使用python main.py,则main.py作为主程序运行,而foo.py就是导入的模块。
此时: Python解释器会令__name__ = "foo"
2.3 执行模块的代码如果使用主程序运行!python foo.py: 输出如下:
beforeimport
beforefunctionA
beforefunctionB
before__name__guard
FunctionA
FunctionB10.0
after__name__guard
如果使用主程序运行import foo: 输出如下:
beforeimport
beforefunctionA
beforefunctionB
before__name__guard
after__name__guard
可以明显看到,当使用主程序运行import foo时,没有执行下面语句的内容,因为此时__name__ = 'foo'
if__name__=='__main__':
functionA()
functionB()
有时我们想编写一个.py文件,该文件既可以被其他程序和模块导入,也可以作为主程序运行。 例子如下:
- 这个文件是一个库,可以被其他文件导入。但是我们希望可以在其中运行一些单元测试或演示。
- 这个文件仅用作主程序,但具有一些单元测试的功能,一些测试框架(类似unittest和doctest)需要导入这个.py文件来测试。我们不希望,它只是因为被导入为模块,就直接运行整个脚本。
- 这个模块主要用作主程序,但它也为高级用户提供了程序员友好的API。
所以,其实就是有的时候希望他在被导入的时候运行一些代码,有的时候希望他作为主程序的时候运行另一些代码。所以需要进行判断。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com