Python 如何跳转到函数定义
大家好
首先,我想说我刚开始学习Python,这个是为了学校的作业,所以我希望能用简单的编程,不用高级的编程技巧和全局函数。我使用的是Python 2.6.6和WingIDE 101。
我需要一个程序,能给用户展示一个菜单。用户需要选择一个选项,然后程序会根据用户的选择来执行相应的操作。
比如,在下面的代码中(这不是实际的代码),如果用户选择了1,就会跳转到sum()这个函数。
def menu():
print "What do you want? "
print " 1 for sum"
print " 2 for subtraction"
pick = raw_input("please insert 1 or 2 ")
if pick == "1":
return sum()
if pick == "2":
return subtraction()
else:
menu()
menu()
def sum():
return 8 + 4
def subtraction():
return 8 - 4
我想知道,如何在用户做出选择后,让程序去执行一个特定的定义。
谢谢
附注 - 运行这个程序时我遇到了这个错误: Traceback (most recent call last): File "/usr/lib/wingide-101-3.2/src/debug/tserver/_sandbox.py", line 12, in File "/usr/lib/wingide-101-3.2/src/debug/tserver/_sandbox.py", line 7, in menu TypeError: sum expected at least 1 arguments, got 0
5 个回答
在你调用menu()的时候,sum这个东西是已经存在的。如果你把这个调用放在定义sum和subtraction之后,就不会出现这个错误了。
请把加法和减法的函数放在menu()函数的定义上面。你现在调用的是Python自带的sum(iterable[, start])函数。
这里有很多问题,我们一个一个来解决。
sum
是Python里一个内置的函数,所以你不能把自己的函数命名为sum
。你需要换个名字,比如sum_foo
或者_sum
。
另外,你的代码是从上到下执行的。如果你在一个函数Y里调用了另一个函数X,
def f():
y()
f()
def y():
print 'Y called'
就会出现这个错误:
NameError: global name 'y' is not defined
因为在你的程序运行时,它并不知道y
是什么,因为在那时y
还没有被定义,程序直接跳到了f()
。
要解决这个问题,你可以这样做:
def f():
y()
def y():
print 'Y called'
f()
另外,调用函数时要用func_name()
,而不是return func
。而且在你的sum
和subtraction
函数中,你返回了值,应该把这些值保存在一个变量里,然后打印出来,或者直接打印它们。
def sum():
return 8 + 4
没有输出
def sum():
print 8 + 4