在 Python 中传递 key-value 对作为函数参数
Passing key-value pairs as function parameters in Python
我正在使用 Python Flickr API,在定义函数时遇到问题(我是 Python 的新手)。
我需要将以下 api 功能包装到一个函数中:
photos = flickr.photos_search(
tags="foo",
is_commons="True")
这 returns 从 Flickr 的 Commons collection.
中搜索标签 "foo" 的照片
现在我想在每次搜索时替换标签,所以我将它包装在一个函数中:
def search_photos(fl_tags):
photos = flickr.photos_search(
tags=fl_tags,
is_commons="True")
search_photos("foo")
这有效,但是 is_commons 标志,我偶尔需要完全替换(不仅是值,还有键,因为 Flickr 的 API 中似乎有一个错误,它始终在 Commons 中搜索 collection 无论您将标志设置为哪个值)。
在这种情况下,我想将其替换为 key-value 组合 license="9"
。
我不知道如何将其放入函数参数中。如果我提供一个 fl_license
参数并在我调用该函数时简单地将其设置为 license="9"
那么这将不起作用(正如我所期望的那样)。
def search_photos(fl_tags, fl_license):
photos = flickr.photos_search(
tags=fl_tags,
fl_license)
search_photos("foo", license="9") # --> SyntaxError: non-keyword arg after keyword arg
有什么方法可以让它工作吗?如何通过函数参数获取 key-value 对?
谢谢!
我相信您正在寻找 "Keyword Arguments"。这个 Whosebug post (Python normal arguments vs. keyword arguments) 确实帮助我理解了这个概念,因为我也很新。
基本上,函数从调用中接收到的任何参数都将分配到一个字典中,函数参数的名称用“**”指定。
您可以尝试这样的操作:
def search_photos(fl_tags, license_val=''):
if not license_val:
photos = flickr.photos_search(
tags=fl_tags,
is_commons="True")
else:
photos = flickr.photos_search(
tags=fl_tags,
license=license_val)
return photos
search_photos("foo") # gives you the same output as before
search_photos("foo", "9") # gives you the search with license as 9
如果没有给出参数,variable = ''
默认将该参数设置为一个空字符串(空字符串的计算结果为 false,因此如果您不传入第二个参数,该函数将默认为一个公共搜索)。否则,它将把第二个参数作为 license_val=
参数。
我正在使用 Python Flickr API,在定义函数时遇到问题(我是 Python 的新手)。
我需要将以下 api 功能包装到一个函数中:
photos = flickr.photos_search(
tags="foo",
is_commons="True")
这 returns 从 Flickr 的 Commons collection.
中搜索标签 "foo" 的照片现在我想在每次搜索时替换标签,所以我将它包装在一个函数中:
def search_photos(fl_tags):
photos = flickr.photos_search(
tags=fl_tags,
is_commons="True")
search_photos("foo")
这有效,但是 is_commons 标志,我偶尔需要完全替换(不仅是值,还有键,因为 Flickr 的 API 中似乎有一个错误,它始终在 Commons 中搜索 collection 无论您将标志设置为哪个值)。
在这种情况下,我想将其替换为 key-value 组合 license="9"
。
我不知道如何将其放入函数参数中。如果我提供一个 fl_license
参数并在我调用该函数时简单地将其设置为 license="9"
那么这将不起作用(正如我所期望的那样)。
def search_photos(fl_tags, fl_license):
photos = flickr.photos_search(
tags=fl_tags,
fl_license)
search_photos("foo", license="9") # --> SyntaxError: non-keyword arg after keyword arg
有什么方法可以让它工作吗?如何通过函数参数获取 key-value 对?
谢谢!
我相信您正在寻找 "Keyword Arguments"。这个 Whosebug post (Python normal arguments vs. keyword arguments) 确实帮助我理解了这个概念,因为我也很新。
基本上,函数从调用中接收到的任何参数都将分配到一个字典中,函数参数的名称用“**”指定。
您可以尝试这样的操作:
def search_photos(fl_tags, license_val=''):
if not license_val:
photos = flickr.photos_search(
tags=fl_tags,
is_commons="True")
else:
photos = flickr.photos_search(
tags=fl_tags,
license=license_val)
return photos
search_photos("foo") # gives you the same output as before
search_photos("foo", "9") # gives you the search with license as 9
如果没有给出参数,variable = ''
默认将该参数设置为一个空字符串(空字符串的计算结果为 false,因此如果您不传入第二个参数,该函数将默认为一个公共搜索)。否则,它将把第二个参数作为 license_val=
参数。