使用元组调用python函数

时间:2019-02-26 14:20:11

标签: python function

我正在编写使用元组进行函数调用的代码

def get_apple():
    print('you got an apple.')

def get_pear():
    print('you got a pear.')

fruits = (get_apple, get_pear)

print('0. apple\n1. pear')
s = eval(input('which one : '))

fruits[s]()

但是一旦执行此脚本,它只会在“ fruitss”上返回“ TypeError:'function'对象不可下标”。

有人有想法吗?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

def get_apple():
    print('you got an apple.')

def get_pear():
    print('you got a pear.')

fruits = (get_apple, get_pear)

n = int(input('0. apple\n1. pear'))

fruits[n]()

不需要eval

您当然必须检查非整数输入。

答案 1 :(得分:0)

def get_apple():
    print('you got an apple.')

def get_pear():
    print('you got a pear.')

fruits = (get_apple, get_pear)

print('0. apple\n1. pear')
s = eval(str(input('which one : ')))

fruits[s]()

此代码在python 2.7.5和python 3.7.1中均有效。

eval()将输入字符串作为输入。因此将输入转换为str