Python - 用作变量名称的用户输入,作为参数传递给函数

时间:2015-12-09 11:31:31

标签: python function global-variables user-input

我在这里有一个问题,它基于用户对脚本的输入并将此用户输入传递给函数。

我有一个脚本,我在其中定义了一个函数。我希望脚本做的是将用户输入作为参数传递给函数。但是,我想传递给函数的一件事是参数的名称而不是参数本身。用户可以选择使用各种不同的列表来输入函数,我想要的是让用户输入他们想要使用的变量的名称。

假设我想将参数Tablelist3传递给函数。当我要求用户输入并输入Tablelist3时,传递给函数的是“Tablelist3”作为字符串,而不是变量本身。

我如何得到它,以便用户名的变量是传递给函数的变量?

希望我的问题有道理并且不太简单。我对Python相对缺乏经验。

3 个答案:

答案 0 :(得分:1)

使用字典,将字符串映射到对象:

tbl1, tbl2 = [1 ,2 ,3], [4 ,5 ,6]
args = {'tbl1': tbl1 ,"tbl2" :tbl2}
# show tables ......

inp = input("Choose table")


def foo(var):
    print(var)


foo(args[inp])

您需要进行错误检查,以确保用户实际输入有效内容。

答案 1 :(得分:0)

我认为你可以利用python的global()或locals()功能。

这是一个例子:

from random import choice as rc



def your_function(variable):
    if variable in local_keys:
        print(variable, " = ", local_variables[variable])
    else:
        print("Your input is not a defined variable")
    return

#randomly populate the variables
item1 = rc(range(20))
item2 = rc(range(20))
item3 = rc(range(20))
item4 = rc(range(20)) 
item5 = rc(range(20))
item5 = rc(range(20))

user_variable = input("Input the variable name: ")

local_variables = locals() # you may have to use globals instead
local_keys = list(local_variables.keys())

your_function(user_variable)

答案 2 :(得分:-2)

使用raw_input,输入只是一个字符串

table2 = range(3)
variable_name = raw_input('Enter Variable Name: ')
def function(list_object):
    print list_object

function(globals()[variable_name])

使用input()评估用户给出的输入数据,确保在请求用户输入之前声明了所有可能的输入列表,否则最终得到NameError < / em>的

table2 = range(3)
variable_name = input('Enter Variable Name: ')
def function(list_object):
    print list_object

function(variable_name)

globals()函数返回模块中定义的所有对象的字典。 您可以通过将变量名称作为键来获取相应的对象。