为了进一步了解参数和功能,我制作了这个问你们。这是python 3.4。
def menu():
print ("Your options are the following:")
print ("1 - k")
print ("2 - e")
print ()
ans = input("Please enter the number: ")
if ans is '1':
start('Ktest')
elif ans is '2':
start('Etest')
else:
print ("Error - invalid choice")
print (" ")
menu()
def start(choose):
test = input("Please choose. 1, 2 or 3")
if test is '1':
choose('1')
choose(thing)
elif test is '2':
choose('2')
choose1(thing)
elif test is '3':
choose('3')
choose(thing)
else:
print ("Error - invalid choice")
print (" ")
menu()
def Ktest(thing):
w = thing + 30
print (w)
def Etest(thing):
e = thing + 15
print (w)
menu()
所以我只是从头开始测试。
当你在菜单()中按1时,你会将start()中的参数设置为Ktest。
我试图做的是选择' ' Ktest'的价值。
Ktest是函数的名称,所以在start()中我试图给参数Ktest()中的参数赋值,所以我选择了(' 1'),之后,我想调用函数Ktest。但是,它说:
TypeError: 'str' object is not callable
选择(' 1')。这是否意味着你不能使用变量来调用函数?
答案 0 :(得分:0)
要将函数作为参数传递,请写下:
start(Etest)
和
start(Ktest)
尝试一个简单的例子:
def menu():
ans = input("Please enter the number: ")
if ans == '1':
start(Ktest)
else:
start(Etest)
def start(choosen_func):
number = input("Please choose. 1, 2 or 3: ")
choosen_func(str(number))
def Ktest(arg):
print("Ktest " + arg)
def Etest(arg):
print("Etest " + arg)
menu()