在python中,name实际上做了什么?
首先,我必须说,我对Python并不陌生。我对在python中,name实际上做了什么?,python,import,python-import,importerror,Python,Import,Python Import,Importerror,首先,我必须说,我对Python并不陌生。我对的用法非常熟悉,如果中的
的用法非常熟悉,如果
中的
main.py:
import bad.py
def main():
print "Hello, World!"
if __name__ == '__main__':
main()
bad.py:
__name__ = '__main__' # I expected an Error caused by this line
def main():
exit() # I know that this function shouldn't be used
if __name__ == '__main__':
main()
运行main.py
时没有输出,我真的不希望有输出
我想知道的:
中的bad.py
是否会自动更改\uuuuu name\uuuu='\uuuuu main\uuuu'
中的变量main.py
?或者可以存在两个不同的\uuuu name\uuuuu
-模块吗“main”
- 是否可以仅通过操纵
来替换\uuuu name\uuuu
语句?如果是,你会怎么做导入
- 当我将
更改为exit()
,输出为打印“Hello”时,
,则出现错误:“Hello”
Traceback (most recent call last): File "main.py", line 1, in <module> import bad.py ImportError: No module named py
将导入语句更改为
如果此程序作为主程序直接运行,则import bad
的目的是运行此代码。如您所见,您可以覆盖名称值,但如果删除“如果签入错误”,则会产生相同的效果
- bad.py中的
独立于main.py中的\uuuuuu name\uuuuu
。当您再次从另一个程序调用main.py时,可以看到这一点\uuuuuuu name\uuuuuu
- 导入功能与
属性完全不同。所以没有\uuu name\uuu
- 出现错误是因为在bad完成后,main继续进行下一次导入。而且它不能导入py
添加更多打印语句以遵循逻辑。您也可以打印\uuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 如果此程序作为主程序直接运行,则
的目的是运行此代码。如您所见,您可以覆盖名称值,但如果删除“如果签入错误”,则会产生相同的效果
- bad.py中的
独立于main.py中的\uuuuuu name\uuuuu
。当您再次从另一个程序调用main.py时,可以看到这一点\uuuuuuu name\uuuuuu
- 导入功能与
属性完全不同。所以没有\uuu name\uuu
- 出现错误是因为在bad完成后,main继续进行下一次导入。而且它不能导入py
添加更多打印语句以遵循逻辑。您也可以打印
本身来查看这些值。看看这个问题。答案就是你想要的。\uuu name\uuuu
的变化取决于您如何用python导入文件。@PrestonHager对不起,我不能在问题标题中写下每一点-您链接问题的答案并不能回答我问题的每一点。如果这些点也是重复的,请留下一个指向其他问题的链接。好的,\uuuu name\uuuuuu
变量是否可用于导入的答案是否定的,它不能。Python必须调用\uuu name\uuuu
函数。关于系统退出的另一个问题很有趣。Python2和Python3之间的函数没有区别,尽管我不知道操作系统的情况。您是否在Python文档中搜索了对\uuuu import\uuuu()
的引用?这里有一个相当不错的解释:看看这个问题。答案就是你想要的。\uuu name\uuuu
的变化取决于您如何用python导入文件。@PrestonHager对不起,我不能在问题标题中写下每一点-您链接问题的答案并不能回答我问题的每一点。如果这些点也是重复的,请留下一个指向其他问题的链接。好的,\uuuu name\uuuuuu
变量是否可用于导入的答案是否定的,它不能。Python必须调用\uuu name\uuuu
函数。关于系统退出的另一个问题很有趣。Python2和Python3在这些函数上没有区别,尽管我不知道操作系统的情况。您在Python文档中搜索过对\uuuu import\uuuu()
的引用吗?这里有一个相当不错的解释:1)我的import语句已经是\uuuu name\uuuu
。我不知道你是否真的有别的意思。2)如果我再次从另一个程序运行import bad.py
,它将是全新的。当然,在这种情况下它是独立的,所以这个检查没有意义3。)据我所知,main.py
关键字对import
(在导入的脚本中)my fault的值有影响。我的意思是导入坏代码。删除.pyOh,当然;)可能我用C语言编程太多了。我修正了它,现在输出是\uuu name\uu
Hello,World代码>(没有换行符)如我所料1。)我的导入语句已经是
。我不知道你是否真的有别的意思。2)如果我再次从另一个程序运行import bad.py
,它将是全新的。当然,在这种情况下它是独立的,所以这个检查没有意义3。)据我所知,main.py
关键字对import
(在导入的脚本中)my fault的值有影响。我的意思是导入坏代码。删除.pyOh,当然;)可能我用C语言编程太多了。我修正了它,现在输出是\uuu name\uu
Hello,World代码>(不带换行符)如我所料
Hello Hello, World
- bad.py中的