首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:设置配置参数

Python:设置配置参数
EN

Stack Overflow用户
提问于 2011-10-22 02:29:22
回答 2查看 235关注 0票数 3

您首选的处理配置参数的方式是什么?

例如:

代码语言:javascript
运行
复制
test(this=7)

可由以下人员处理:

代码语言:javascript
运行
复制
def test(**kw):
  this = kw.pop('this', 1)
  that = kw.pop('that', 2)

代码语言:javascript
运行
复制
def test(**kw):
  if 'this' in kw:
      this = kw['this']
  else:
      this = 1
  if 'that' in kw:
      that = kw['that']
  else:
      that = 2

有没有更好的(更有蟒蛇风格的)方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-22 02:58:17

如果可能的参数和默认值是固定的,Pythonic方法是这样写的:

代码语言:javascript
运行
复制
def test(this=1, that=2):
    ...

如果参数列表是动态的,那么使用kwds.pop()的方法有一个很好的优势,可以让您验证是否使用了所有参数(例如,检测拼写错误的参数名称)。查看由collections.namedtuple('Point', ['x', 'y'], verbose=True)生成的代码片段很有指导意义。注意最后的检查,以确保所有参数都是从kwds中使用的:

代码语言:javascript
运行
复制
    def _replace(_self, **kwds):
        'Return a new Point object replacing specified fields with new values'
        result = _self._make(map(kwds.pop, ('x', 'y'), _self))
        if kwds:
            raise ValueError('Got unexpected field names: %r' % kwds.keys())
        return result 
票数 3
EN

Stack Overflow用户

发布于 2011-10-22 02:31:53

我个人喜欢像这样遍历键/值对:

代码语言:javascript
运行
复制
def test(**kw):
    for k, v in kw.items():
        if k == 'this':
            something = v
        # etc...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7853706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档