def mainProgram(myDict):
methodDict = {'add': addDB(myDict, params[1], params[2]),
'find': findDB(myDict, params[1]),
'del': removeDB(myDict, params[1], params[2]),
'clear': clearAll(myDict)}
inpt = None
while inpt != "End":
inpt = input("-->")
params = inpt.split()
methodDict[params[0]]
Run Code Online (Sandbox Code Playgroud)
这是我的代码,当我尝试执行我得到的代码时,"在赋值之前引用了UnboundLocalError:局部变量'params'"
有可能做我在python中尝试做的事情吗?
那么,实际发生了什么
methodDict = {'add': addDB(myDict, params[1], params[2]),
'find': findDB(myDict, params[1]),
'del': removeDB(myDict, params[1], params[2]),
'clear': clearAll(myDict)}
Run Code Online (Sandbox Code Playgroud)
是你执行 addDB etc,也就是说,你的methodDict将包含addDB(...params...)它运行的结果.
不幸的是它没有运行,因为当执行发生时没有定义params.
你想要做的是,将一个callable存储在字典中并运行它......就像这样
methodDict = {'add': lambda x: addDB(myDict, x[0], x[1])}
# and you execute with
methodDict['add'](params)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |