def_name()中参数中的多个参数和函数名称中的变量

时间:2015-02-03 16:53:15

标签: python

为了进一步了解参数和功能,我制作了这个问你们。这是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')。这是否意味着你不能使用变量来调用函数?

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()