Python必备知识之“if __name__ == ‘__main__‘:”

本文介绍了Python中`if __name__ == '__main__':`的作用,解释了它如何用于调试模块并确保代码仅在直接执行模块时运行。通过示例展示了如何使用此语法避免在导入时执行特定代码,从而控制代码执行流程。

在学习Python的过程中经常会看到“if __name__ == '__main__':”这行代码,那么这行代码的作用究竟是什么呢?

“if __name__ == '__main__':”这行代码的主要作用是调试某个模块的正确性,将要调试的代码以缩进的形式写在“if __name__ == '__main__':”下面,这样当其他模块使用这个模块里的变量、方法或类的时候,就不会去执行“if __name__ == '__main__':”下面的代码了。

这是因为__name__表示当前执行的模块名,'__main__'表示顶层代码执行的作用域名称,当通过标准输入、脚本文件或是交互式命令读入的时候__name__就等于'__main__',模块可以通过检查其__name__属性值来得知代码是否在main作用域中执行。

例如,当前有test_one模块和test_two模块,test_one模块中定义了say_hello()函数;test_two模块中定义了say_hi()函数。

test_one模块代码如下:

defsay_hello():print('hello')say_hello()

test_two模块代码如下:

defsay_hi():print('How are you?')say_hi()

在上述两个模块中,函数调用后会分别输出相应的内容,此时,若在test_two模块中导入test_one模块,当调用say_hi()函数后,test_two模块会分别调用say_hello()函数和say_hi()函数,示例代码如下:

# 导入test_one模块importtest_onedefsay_hi():print('How are you?')say_hi()

执行test_two模块代码,运行结果如下:

helloHow are you?

从输出结果可以看出,在test_two模块中分别输出了say_hello()函数和say_hi()函数的输出结果。

为了让test_one模块中的代码,仅在test_one模块中运行,此时可在test_one模块中添加“if __name__ == '__main__':”,具体代码如下:

defsay_hello():print('hello')# 令当前的代码仅在test_one模块中运行if__name__ =='__main__':    say_hello()

此时,再次执行test_two模块,输出结果如下:

Howare you?

从输出结果可以看出,此次输出并没有调用say_hello()函数,只调用了say_hi()函数。

“if __name__ == '__main__':”这行代码并非等同于C/C++、Java或C#等语言中的main()函数,在Python程序中这行代码也并非一定要存在于执行代码中,其主要作用是为了调试模块中代码的正确性。

同学们学会了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值