“**”在Python中意味着什么?
可能重复:
**和*为python参数做些什么?
* args和** kwargs是什么意思?
简单的程序:
storyFormat = """
Once upon a time, deep in an ancient jungle,
there lived a {animal}. This {animal}
liked to eat {food}, but the jungle had
very little {food} to offer. One day, an
explorer found the {animal} and discovered
it liked {food}. The explorer took the
{animal} back to {city}, where it could
eat as much {food} as it wanted. However,
the {animal} became homesick, so the
explorer brought it back to the jungle,
leaving a large supply of {food}.
The End
"""
def tellStory():
userPicks = dict()
addPick('animal', userPicks)
addPick('food', userPicks)
addPick('city', userPicks)
story = storyFormat.format(**userPicks)
print(story)
def addPick(cue, dictionary):
'''Prompt for a user response using the cue string,
and place the cue-response pair in the dictionary.
'''
prompt = 'Enter an example for ' + cue + ': '
response = input(prompt).strip() # 3.2 Windows bug fix
dictionary[cue] = response
tellStory()
input("Press Enter to end the program.")
关注这一行:
story = storyFormat.format(**userPicks)
**
是什么意思? 为什么不通过一个普通的userPicks
?
'**'需要一个字典并提取它的内容并将它们作为参数传递给一个函数。 以此功能为例:
def func(a=1, b=2, c=3):
print a
print b
print b
现在通常你可以像这样调用这个函数:
func(1, 2, 3)
但是你也可以用这样的参数来填充一个字典:
params = {'a': 2, 'b': 3, 'c': 4}
现在你可以将它传递给函数:
func(**params)
有时你会在函数定义中看到这种格式:
def func(*args, **kwargs):
...
*args
提取位置参数和**kwargs
提取关键字参数。
**意味着kwargs。 这里有一篇很好的文章。
阅读此:http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/
你可以阅读Python教程的这一部分和这篇文章。
链接地址: http://www.djcxy.com/p/9055.html上一篇: What does "**" mean in python?
下一篇: How to implement single instance per machine application?