为什么这个python代码运行两次

时间:2017-11-28 12:23:57

标签: python python-3.x

这是代码

import random

print("Hello", end="")
print("twice")

以及代码的截图

enter image description here

当我执行此代码时,由于某种原因它运行了两次。问题似乎来自 import random 语句,因为如果我删除该语句或导入其他模块,它可以正常工作。

这可能是什么原因,我应该在我的系统上重新安装Python。

5 个答案:

答案 0 :(得分:14)

python没什么问题。

原因很简单:

您的模块正在导入自身(因为它也被命名为random) - 这与python的查找机制有关。在导入pythonpath模块之前,python将首先尝试从根文件夹导入。

来自docs

  

当导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,则会在变量sys.path给出的目录列表中搜索名为spam.py的文件。 sys.path从这些位置初始化:

     
      
  • 包含输入脚本(或当前目录)的目录   没有指定文件时。)
  •   
  • PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
  •   
  • 依赖于安装的默认值。
  •   

答案 1 :(得分:2)

由于您的文件(模块)被称为random.pyimport random将导入此文件。

现在,"导入"意思? 语句import something将使Python从当前目录开始查找名称something。 因此,import random将导致导入此文件,因为其名称将影响内置random。 此外,如果要导入的名称已在命名空间中,则忽略import语句。

找到要导入的模块后,将执行其代码。

因此,您的脚本流程如下:

  • 查找random.py名称
  • random添加到命名空间
  • 执行random.py中包含的代码
    • 命名空间中已存在random名称,因此忽略import random语句
    • 打印文字
  • 打印文字

答案 2 :(得分:1)

原因是您已将脚本命名为random.py,并在其中导入random

random导入内置random模块,而是导入您创建的random模块。这会导致脚本执行相同的语句两次(如果您尝试从random导入某些内容,也会导致其他丑陋的错误,例如from random import randrange。)

重命名脚本会导致正常行为。

答案 3 :(得分:0)

因为您的脚本名为random.py,所以当您import random执行脚本时也是如此。请注意正确命名您的脚本。

答案 4 :(得分:0)

你的python脚本被命名为random.py所以当你导入随机它导入自己时,在导入模块的python中它将运行它。

因此,你得到两次打印。 重命名脚本或删除导入