我正在学习python,使用sl4a制作手机应用程序。我把它作为参数传递给我时遇到了麻烦。我已经搜索过,看看是否有人已经遇到这个问题并找到了一些相似的问题,但无法解决我的错误。
这里是代码(我删除了所有不相关的部分):
def choiceForm(screenTitle, choices, posMessage, neutMessage,
negMessage, questType, screen):
qType = questType[screen]
print(qType) #Not giving what it should
# More code
def reservForm():
questionType = {0 : 'single', 1 : 'date', 2 : 'input', 3 : 'input',
4 : 'multi', 5 : 'single'}
reservChoice, screenID, success = choiceForm(titlePack[screenID],
choicePack[screenID], 'Suivant', 'Précédent', 'Quitter',
questionType, screenID)
# More code
执行时,我得到" s"因为qtype不应该是什么。我想在被调用的函数中访问我的字典,以便在给定索引(screenID)的情况下获取值。我读了一个教程,告诉我用**运算符解包这个东西,但我不明白一件事。在我更改choiceForm中的参数以传递字典之前,所有工作都运行正常(我只是传递了其中的一个值'直到我意识到我需要整个事情才能实现一个功能i'我要补充)
答案 0 :(得分:0)
如果您正在讨论将Dictionary作为参数传递,它应该像传递任何其他参数类型一样简单,并且在您的调用函数中使用此字典与使用常规字典一样正常:
dic.keys(), dic.values(), dic.items(), dic[key]=value...etc
现在,如果你正在谈论这个符号:“**”,这意味着将参数作为字典传递,Python文档中的示例应该清楚:
def cheeseshop(kind, *arguments, **keywords):
print "-- Do you have any", kind, "?"
print "-- I'm sorry, we're all out of", kind
for arg in arguments:
print arg
print "-" * 40
keys = sorted(keywords.keys())
for kw in keys:
print kw, ":", keywords[kw]
调用此功能:
cheeseshop("Limburger", "It's very runny, sir.",
"It's really very, VERY runny, sir.",
shopkeeper='Michael Palin',
client="John Cleese",
sketch="Cheese Shop Sketch")
我建议你阅读:https://docs.python.org/2.7/tutorial/controlflow.html#keyword-arguments