首页 > 试题广场 >

已知print_func.py的代码如下:

[单选题]
已知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 回复(10)

其中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 回复(2)

首先程序从第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)
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 回复(2)
这题答案错了,应该选A
编辑于 2019-07-04 21:20:27 回复(2)

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

2. 如果模块是被直接执行,__name__的值为’__main__’
发表于 2021-07-06 09:57:19 回复(0)
直接执行print_func.py模块,__name__="__main__'',
如以导入模块的形式执行print_func文件,则__name__的值为该文件名print_func
发表于 2021-07-01 21:43:14 回复(0)
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

  举个例子,下面在test.py中写入如下代码:

print "I'm the first."
if __name__=="__main__":
    print "I'm the second."
并直接执行test.py,结果如下图,可以成功print两行字符串。即,if __name__=="__main__": 语句之前和之后的代码都被执行。

发表于 2021-09-07 14:42:23 回复(0)
此题答案为A;
Hello World!
__name__ value: print_func
Done!


发表于 2019-07-15 16:49:38 回复(0)
本来就是A,评论区的一群渣渣胡说八道什么
发表于 2022-05-26 20:23:18 回复(0)
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
发表于 2022-03-20 17:30:07 回复(0)
题没看完,早早选了C, 大意了
发表于 2021-11-13 12:47:34 回复(0)
<p>如果模块被直接执行:__name__==__main__,</p><p>如果模块被导入:__name__=模块名(不带.py)</p>
发表于 2020-10-14 00:59:04 回复(0)
谁能告诉我一下这题为什么不选d吗?谢谢
发表于 2020-08-23 14:45:05 回复(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)