我确信这很简单但我无法在任何地方找到答案。假设我有一个名为ConversionSelector.py的简单温度转换程序,它看起来像
# Helper function to print all menu items:
def displayMenu():
print 'Temperature Conversions Menu:';
print '(1) Convert Fahrenheit to Celsius';
print '(2) Convert Celsius to Fahrenheit';
# Main function to display menu and invoke user-selected conversion:
def select():
displayMenu();
choice = input('Enter choice number: ');
if (choice == 1):
F2C();
elif (choice == 2):
C2F();
else:
print 'Invalid choice: ', choice;
print 'Bye-bye.';
# Convert Fahrenheit temperature to Celsius temperature:
def F2C():
Fahrenheit = input('Enter degrees in Fahrenheit: ');
Celsius = (5.0 / 9.0) * (Fahrenheit - 32);
print Fahrenheit, 'Fahrenheit =', Celsius, 'Celsius';
# Convert Celsius temperature to Fahrenheit temperature:
def C2F():
Celsius = input('Enter degrees in Celsius: ');
Fahrenheit = (9.0 / 5.0) * Celsius + 32;
print Celsius, 'Celsius =', Fahrenheit, 'Fahrenheit';
我使用Mac但我无法运行它。例如,如果我输入终端 python ConversionSelector.py它什么都不做。 (我安装了IDLE和Python Launcher)。
现在,当我打开Windows并输入select()时,它会显示菜单,可以选择从两种转换方法中进行选择。在Mac Python Shell中输入相同内容会给我带来这个错误:
追踪(最近一次通话): 文件“”,第1行,in 选择() NameError:名称'select'未定义
我知道这可能是一件非常简单的事情。任何帮助将不胜感激。
答案 0 :(得分:1)
将其添加到文件的底部:
if __name__ == '__main__':
select()
这将使python ConversionSelector.py
运行您的选择功能。这里发生的是__name__在直接调用脚本时为__main__
,因此您需要告诉解释器运行您的主函数。
或者,您可以从解释器导入模块。在python
文件所在的目录中运行ConversionSelector.py
。然后运行:
import ConversionSelector
ConversionSelector.select()
您还可以使用-i
选项运行python。运行python -i ConversionSelector.py
将导入您的模块并在全局命名空间中插入其所有名称,因此您只需运行select()
。
答案 1 :(得分:1)
执行此操作时:
$ python ConversionSelector.py
Python只运行该文件。由于函数定义是文件中唯一的代码,因此不会发生任何可见的情况。如果要加载文件然后进入交互模式,则需要-i标志:
$ python -i ConversionSelector.py
希望这有帮助。
答案 2 :(得分:0)
它不应该做任何事情。你只是定义功能。你没有打电话(因此跑)他们。您可以在文件底部添加主程序逻辑。检查模块是作为主程序运行( python ConversionSelector.py )还是导入:
是一个很好的做法。if __name__ == '__main__':
# main logic goes here
如果将代码导入某个其他文件或交互式shell,则代码不会被扩展。如果你想在shell中“播放”,只需在存储文件的目录中运行它(使用 python 命令),然后输入 import ConversionSelector 。那应该导入模块和你定义的所有函数。您可以将它们称为ConversionSelector.function_name()。我建议阅读/观看此内容:
http://code.google.com/edu/languages/google-python-class/introduction.html