我在这里有一个问题,它基于用户对脚本的输入并将此用户输入传递给函数。
我有一个脚本,我在其中定义了一个函数。我希望脚本做的是将用户输入作为参数传递给函数。但是,我想传递给函数的一件事是参数的名称而不是参数本身。用户可以选择使用各种不同的列表来输入函数,我想要的是让用户输入他们想要使用的变量的名称。
假设我想将参数Tablelist3传递给函数。当我要求用户输入并输入Tablelist3时,传递给函数的是“Tablelist3”作为字符串,而不是变量本身。
我如何得到它,以便用户名的变量是传递给函数的变量?
希望我的问题有道理并且不太简单。我对Python相对缺乏经验。
答案 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()函数返回模块中定义的所有对象的字典。 您可以通过将变量名称作为键来获取相应的对象。