Python 空闲和终端导入差异

标签 python terminal python-idle

我刚开始使用 Python,我有一个关于空闲与终端的问题。

闲着的时候,我做了一个叫Robot.py的文件

我有一个类叫做机器人

class Robot(object)

    def __init__(self,x,y):
        #some code here etc...

def HelloWorld()
    print "Hello World!"

我有另一个名为 testrobot.py 的文件,它看起来像这样:

import Robot
r = Robot(1,4)

在空闲状态下,当我运行 testrobot.py 时,我能够成功地创建一个 Robot 对象。但是在终端中,它会给出错误消息 NameError: Robot is not defined

我不确定如何在终端中运行我的程序。

还有:

如何调用位于 Robots.py 中但不属于外部文件(例如 testrobot.py)中 Robot 类的 HelloWorld() 函数?

提前致谢!

最佳答案

当您在 IDLE 中加载和运行脚本时,它们会自动加载给解释器。这意味着只要您在 IDLE 中运行脚本,Python shell 就已经定义了这些类型。

当你想从 IDLE 之外运行它时,即不先运行模块,你需要从该模块导入你的机器人。为此,您导入模块,而不是类型:

import Robot
myRobot = Robot.Robot(...)

或者,如果你想直接使用Robot,你需要使用from ... import语法:

from Robot import Robot
myRobot = Robot(...)

同样,您可以在第一种情况下使用 Robot.HelloWorld 调用您的函数,或者在第二种情况下直接将 HelloWorld 添加到导入列表:

from Robot import Robot, HelloWorld
myRobot = Robot(...)
HelloWorld()

如您所见,以小写字母命名文件通常是个好主意,因为它们是模块名称(或其他语言中的“命名空间”)。

关于Python 空闲和终端导入差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542530/

相关文章:

python - 如果还没有在数组中,则将项目添加到数组中

bash - 如何使我的 shell 脚本可执行

linux - Bash标准输出同时显示和重定向

python idle 2.7.9 给出了错误的语法错误

python - 使用 IDLE 运行 Python PyUnit 单元测试

python - 类型错误 : unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

python - sqlalchemy 绑定(bind)值

ubuntu - 终端在 `npm start` 之后不显示输出

powershell - 我的程序在IDLE和PyScripter中运行良好,但在PowerShell和命令行中却无法运行

python - 如果数字是 n 的倍数 - Python