我试图从Python 3的kwargs
中提取一个值,但是失败了,我很难理解为什么。
代码:
def parse_config(**kwargs):
import pdb; pdb.set_trace()
_config = kwargs.get('configfile', os.path.join(os.path.expanduser('~'), '.dakcs_rsync.json'))
print('Config file: {}'.format(_config))
结果:
Linux$ /home/user/tmp/rs.py -c
> /home/user/tmp/rs.py(226)parse_config()
-> _config = kwargs.get('configfile', os.path.join(os.path.expanduser('~'), '.rs.json'))
(Pdb) kwargs
{'configfile': None}
(Pdb) kwargs.get('configfile')
(Pdb) kwargs.get('configfile', 'blah')
(Pdb) _test = kwargs.get('configfile', 'foo')
(Pdb) print(repr(_test))
None
(Pdb) _test
(Pdb) sys.version_info
sys.version_info(major=3, minor=4, micro=9, releaselevel='final', serial=0)
(Pdb)
为什么kwargs.get()
不能像我期望的那样检索configfile
键的值?
答案 0 :(得分:0)
我在脑海中浏览答案时找到了自己的答案。
dict.get()
会在该键不存在时检索默认值。在这种情况下确实存在,但是其值为None
。我一直认为,如果该值不存在或为None
,它将为您提供一个默认值。我错了。