首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python字符串/参数操作

Python字符串/参数操作
EN

Stack Overflow用户
提问于 2018-05-31 06:31:15
回答 1查看 115关注 0票数 2

我有一个函数,它有一个通过用户通过sys.argv.pop()输入获得的name1值,该值指定在myconfig.py中使用哪个参数。作为python的新手,我想知道做这件事的正确方法是什么,这样我才能正确地访问所需的数据。

完成后,我希望参数的函数形式为:myconfig.Oink['lower_bound']myconfig.Woof['lower_bound']

代码语言:javascript
复制
> self.do_x(id, myconfig."name1".format(name1)['lower_bound'],
> myconfig."name1".format(name1)['upper_bound'])
>                                                  ^ SyntaxError: invalid syntax
__________________________________________________________________

> myconfig.py
> 
> Oink = dict(lower_bound = 874,upper_bound = 1983,) 

> Woof = dict(lower_bound = 1,upper_bound = 984,)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 07:04:09

您可以使用getattr来实现这一点

代码语言:javascript
复制
name1 = sys.argv.pop()

# ...

values = getattr(myconfig, name1)
self.do_x(values['lower_bound'], values['upper_bound'])

请注意,getattr区分大小写,这意味着虽然getattr(myconfig, 'Oink')将生成正确的值,但getattr(myconfig, 'oink')将引发AttributeError

如果要处理无效值,可以使用hasattr

代码语言:javascript
复制
if not hasattr(myconfig, name1):
    raise ValueError('Invalid value {}'.format(name1))

values = getattr(myconfig, name1)
self.do_x(values['lower_bound'], values['upper_bound'])

如果您希望使用默认值而不是引发ValueError,则可以对getattr使用default关键字参数

代码语言:javascript
复制
default = dict(lower_bound=20, upper_bound=50)
values = getattr(myconfig, name1, default=default)
self.do_x(values['lower_bound'], values['upper_bound'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614187

复制
相关文章

相似问题

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