dict.update()是否有用?

dict1.update(dict2)当然等同于此代码:
对于键,值为dict2.iteritems():
dict1 [key] =值
请注意,它将dict1中的值替换为从dict2取的值.我
不认识别人,但我经常想保持价值观
在dict1中,不论dict2中的什么,只添加dict2中的项目
这是新钥匙.像这样:
对于键,值为dict2.iteritems():
如果不是dict1.has_key(key):
dict1 [key] =值
这是我前几天写的一些代码:
导入urllib2
def create_request(url,标题):
tmp = default_headers.copy()
tmp.update(标题)
req = urllib2.request(url,none,tmp)
#...
返回req
我有最微弱的代码气味.我更喜欢写
这样的事情:
def create_request(url,标题):
headers.update(default_headers)
req = urllib2.Request(url,无,标题)
#...
返回req
但是当然,第二个例子做错了事,替换了
具有默认值的显式标头.
别人发现了什么?您是否发现dict.update()的用途?还有别的
您是否使用字典来组合字典?
- -
史蒂文

# 回答1


Steven d'Aprano 如果您实际上不需要突变dict1在原地,则只需使用更新
为了这:
d = dict(dict2)
D.Update(dict1)
dict1 = d
有第二个代码气味:即使它做了您想要的
将通过作为标头传递的参数变异不好.如果呼叫者怎么办
想再次重复使用标头以进行另一个电话吗?要做的事情要好得多:
def create_request(url,标题):
hdrs = dict(default_headers)
hdrs.update(标题)
req = urllib2.request(url,无,hdrs)
#...
返回req
# 回答2


> def create_request(url,标题):
有第二个代码气味:即使它做了您想要的
将通过作为标头传递的参数变异不好.如果呼叫者怎么办
想再次重复使用标头以进行另一个电话吗?
以防万一不清楚该代码的问题是什么:
create_request是一个函数,即.它返回值.像这样,
它不应该有任何副作用.如果有副作用,
应将其视为一个程序,然后返回.
问候,
马丁
# 回答3


在文章<00 **********************@news.astraweb.com>中,
Steven d'Aprano 我公司的代码在很大程度上依赖D.Update() - 非常方便
网络表单的上下文.
- -
aahz(aaxpythoncraft.com)<*http://www.pythoncraft.com/
采用一个过程 - 停止杀死所有的孩子!

标签: python

添加新评论