**kwargs 与 python 函数中的 10 个参数?
我从 python 开始,尝试为 ebay 网络服务:
现在,我的问题是:
说,这是我的功能:
def findBestMatchItemDetailsAcrossStores():
request = """<?xml version="1.0" encoding="utf-8"?>
<findBestMatchItemDetailsAcrossStoresRequest xmlns="http://www.ebay.com/marketplace/search/v1/services">
<siteResultsPerPage>50</siteResultsPerPage>
<entriesPerPage>50</entriesPerPage>
<ignoreFeatured>true</ignoreFeatured>
<keywords>ipod</keywords> <-----REQUIRED
<itemFilter>
<paramName>PriceMin</paramName>
<paramValue>50</paramValue>
<name>Currency</name>
<value>USD</value>
</itemFilter>
<itemFilter>
<paramName>PriceMax</paramName>
<paramValue>100</paramValue>
</itemFilter>
</findBestMatchItemDetailsAcrossStoresRequest>"""
return get_response(findBestMatchItemDetailsAcrossStores.__name__, request)
其中,关键字是唯一必填字段。那么,我应该如何构造该方法呢?方法可以是:
- 创建一个对象,将其传递给 func(object) :java 方式
- 传递所有参数: func(a=val1, b=val2, c=val3, d=val4 etc)
- 使用 **kwargs 和相信调用该函数的人,他会传递正确的键和值,因为我将使用这些键来实际构造 XML 标记。
更新:
您在请求中看到的所有 xml 标记都需要由用户传递。但是关键字应该被传递,并且如果需要也可以传递其他关键字。
有什么建议吗?
I am starting out with python and trying to construct an XML request for an ebay web service:
Now, my question is:
Say, this is my function:
def findBestMatchItemDetailsAcrossStores():
request = """<?xml version="1.0" encoding="utf-8"?>
<findBestMatchItemDetailsAcrossStoresRequest xmlns="http://www.ebay.com/marketplace/search/v1/services">
<siteResultsPerPage>50</siteResultsPerPage>
<entriesPerPage>50</entriesPerPage>
<ignoreFeatured>true</ignoreFeatured>
<keywords>ipod</keywords> <-----REQUIRED
<itemFilter>
<paramName>PriceMin</paramName>
<paramValue>50</paramValue>
<name>Currency</name>
<value>USD</value>
</itemFilter>
<itemFilter>
<paramName>PriceMax</paramName>
<paramValue>100</paramValue>
</itemFilter>
</findBestMatchItemDetailsAcrossStoresRequest>"""
return get_response(findBestMatchItemDetailsAcrossStores.__name__, request)
Where, keyword is the only required field. So, how should I construct the method? The ways can be:
- Create an object, pass it to the func(object) : The java way
- Pass all the arguments: func(a=val1, b=val2, c=val3, d=val4 etc)
- Use **kwargs and trust the person who calls the function, that he passes the right keys with the values, because I will use the keys to actually construct the XML tags.
Update:
All the xml tags you see in the request are needed to be passed by the user. But keywords should be passed and others maybe passed if required.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一个好主意是将所有具有适当默认值(或仅
None
默认值)的参数放入函数签名中。是的,它需要在函数本身中进行更多的输入,但是界面将是干净的、自记录的并且易于使用,因为您不必在 eBay 文档或函数源中查找可能的参数。这将节省您以后的时间。A good idea is to put all the parameters with appropriate defaults (or just
None
defaults) in the function signature. Yeah, it will require a little more typing in the function itself, but the interface will be clean, self-documented and simple to use, as you won't have to look up possible parameters in ebay docs or function source. It will save you time later on.将消息建模为一个类怎么样?
how about modeling the message as a class?
我会为所有参数使用命名参数。通过这样做,可以很容易地分配默认值,并强制用户提供所需的参数(通过省略默认值)
I would use named parameters for all. By doing this it is very easy to assign default values, and to force the user to supply required parameters (by omitting the default)