Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,name实际上做了什么?_Python_Import_Python Import_Importerror - Fatal编程技术网

在python中,name实际上做了什么?

在python中,name实际上做了什么?,python,import,python-import,importerror,Python,Import,Python Import,Importerror,首先,我必须说,我对Python并不陌生。我对的用法非常熟悉,如果中的

首先,我必须说,我对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中的
      \uuuuuu name\uuuuu
      独立于main.py中的
      \uuuuuuu name\uuuuuu
      。当您再次从另一个程序调用main.py时,可以看到这一点
    • 导入功能与
      \uuu name\uuu
      属性完全不同。所以没有
    • 出现错误是因为在bad完成后,main继续进行下一次导入。而且它不能导入py

    添加更多打印语句以遵循逻辑。您也可以打印
    \uuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    如果此程序作为主程序直接运行,则
    的目的是运行此代码。如您所见,您可以覆盖名称值,但如果删除“如果签入错误”,则会产生相同的效果

    • bad.py中的
      \uuuuuu name\uuuuu
      独立于main.py中的
      \uuuuuuu name\uuuuuu
      。当您再次从另一个程序调用main.py时,可以看到这一点
    • 导入功能与
      \uuu name\uuu
      属性完全不同。所以没有
    • 出现错误是因为在bad完成后,main继续进行下一次导入。而且它不能导入py

    添加更多打印语句以遵循逻辑。您也可以打印
    \uuu name\uuuu
    本身来查看这些值。

    看看这个问题。答案就是你想要的。
    \uuuu name\uuuuuu
    的变化取决于您如何用python导入文件。@PrestonHager对不起,我不能在问题标题中写下每一点-您链接问题的答案并不能回答我问题的每一点。如果这些点也是重复的,请留下一个指向其他问题的链接。好的,
    \uuu name\uuuu
    变量是否可用于导入的答案是否定的,它不能。Python必须调用
    \uuuu import\uuuu()
    函数。关于系统退出的另一个问题很有趣。Python2和Python3之间的函数没有区别,尽管我不知道操作系统的情况。您是否在Python文档中搜索了对
    \uuu name\uuuu
    的引用?这里有一个相当不错的解释:看看这个问题。答案就是你想要的。
    \uuuu name\uuuuuu
    的变化取决于您如何用python导入文件。@PrestonHager对不起,我不能在问题标题中写下每一点-您链接问题的答案并不能回答我问题的每一点。如果这些点也是重复的,请留下一个指向其他问题的链接。好的,
    \uuu name\uuuu
    变量是否可用于导入的答案是否定的,它不能。Python必须调用
    \uuuu import\uuuu()
    函数。关于系统退出的另一个问题很有趣。Python2和Python3在这些函数上没有区别,尽管我不知道操作系统的情况。您在Python文档中搜索过对
    \uuuu name\uuuu
    的引用吗?这里有一个相当不错的解释:1)我的import语句已经是
    import bad.py
    。我不知道你是否真的有别的意思。2)如果我再次从另一个程序运行
    main.py
    ,它将是全新的。当然,在这种情况下它是独立的,所以这个检查没有意义3。)据我所知,
    import
    关键字对
    \uuu name\uu
    (在导入的脚本中)my fault的值有影响。我的意思是导入坏代码。删除.pyOh,当然;)可能我用C语言编程太多了。我修正了它,现在输出是
    Hello,World(没有换行符)如我所料1。)我的导入语句已经是
    import bad.py
    。我不知道你是否真的有别的意思。2)如果我再次从另一个程序运行
    main.py
    ,它将是全新的。当然,在这种情况下它是独立的,所以这个检查没有意义3。)据我所知,
    import
    关键字对
    \uuu name\uu
    (在导入的脚本中)my fault的值有影响。我的意思是导入坏代码。删除.pyOh,当然;)可能我用C语言编程太多了。我修正了它,现在输出是
    Hello,World(不带换行符)如我所料
    
    Hello Hello, World