首页 > 试题广场 > 已知print_func.py的代码如下: print('
[单选题]

已知print_func.py的代码如下:

print('Hello
World!')
print('__name__
value: ', __name__)
def main():
    print('This message is from main function')
if __name__ ==
'__main__':
    main()
print_module.py的代码如下:
import print_func
print("Done!")
运行print_module.py程序,结果是:
  • Hello World!

    __name__ value: print_func

    Done!
  • Hello World!

    __name__ value: print_module

    Done!
  • Hello World!

    __name__ value: __main__

    Done!
  • Hello World!
    __name__ value:
    Done!
答案错误,应该选A
如果是直接执行print_func文件,则__name__的值为__main__;
如果是以导入模块的形式执行print_func文件,则__name__的值为该文件名print_func。

__name__的目的就是如果是以导入模块的形式执行文件,不会执行if __name__ == '__main__'下面的语句。
发表于 2019-07-12 13:18:59 回复(6)

其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:

1:__name__是一个变量。前后加了双下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。

通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。




1. 如果模块是被导入,__name__的值为模块名字

2. 如果模块是被直接执行,__name__的值为’__main__’
编辑于 2019-08-22 09:51:56 回复(0)
这题答案错了,应该选A
编辑于 2019-07-04 21:20:27 回复(2)
1.先看下面类名为print_module, 2.然后进入了类print_func, 3.输出了Hello Word!, 4.接着输出__name__value: 类名(即print_func), 5.然后到if函数,由于两个值不相等,所以不输出前面定义的main()中的内容, 6.最后回到print(“Done!”)
发表于 2019-07-12 08:42:49 回复(1)

首先程序从第11行开始执行!!!

import print_func #调用模块依次执行

打印Hello World,
接着打印_name__value: print_func
(此时print_func.py作为模块被调用则 _name__就是他自己的名字)

if __name__ == '__main__':
    main(

_main__的定义为: 一段程序作为主线运行程序时其内置名称为main
由于这里是被调用的,所以main是print_module.py。if条件不满足跳过,回到主程序中。
打印Done

发表于 2020-02-06 14:59:17 回复(0)
__name__是内置属性,每一个python的对象,方法函数,类都会默认有这个字段,返回的是函数名
发表于 2019-07-09 14:15:55 回复(0)
解析对的但是答案错了,这题应该选A
发表于 2020-06-18 12:59:47 回复(0)
发表于 2020-06-17 09:13:02 回复(0)
这里要知道,任意.py文件,它的__name__的值都是__main__,不要被题中的main函数干扰。这里把print_func.py的函数main改个名字叫maind,再次打印__name__变量,它的值也依旧是__main__
发表于 2020-05-16 15:30:29 回复(0)
<p>if后面的只有在自己运行的时候才是以main运行的,可执行后面的,被import的时候name是文件名,if后面不成立不运行</p>
发表于 2020-04-28 20:10:36 回复(0)
&amp;<p>答案错了,应该选A</p>
发表于 2020-04-23 11:28:08 回复(0)
这道题有问题,print_func.py文件以导入模块的形式执行print_func文件,则__name__的值为该文件名print_func。
发表于 2020-04-16 11:07:09 回复(0)
格式有问题就不说了。为了防止我理解错误,我还刻意用编译器跑了一把,结果还是跟A相符。
牛客网的题真是泥垢了。
发表于 2020-04-02 17:17:57 回复(0)
答案错误
发表于 2020-03-02 19:38:58 回复(0)
本题选a
发表于 2020-02-19 19:12:09 回复(0)
什么鬼答案,应该选A
发表于 2020-01-26 18:55:10 回复(0)
选 A
发表于 2019-12-27 13:13:44 回复(0)


发表于 2019-12-27 08:46:15 回复(0)
python 3.7 测试 结果:
hello world
__name__ value: print_fun
Done
选A
发表于 2019-11-07 20:30:43 回复(0)
 print('This message is from main function')  这一句为啥不打印谁能解答一下
发表于 2019-09-29 11:02:19 回复(1)