这可能很简单,但有人能解释一下下面的目的是什么吗?你知道吗
def clean_param_value(self, value):
for s, r in (('<', '{'), ('>', '}'), (' ', '_')):
value.replace(s, r)
它是从
params = dict(
(item['ParameterName'],
self.clean_param_value(item['ParameterValue']))
for item in cursor.fetchall()
)
在for
循环中,变量s
和r
分别分配给'<'
和'{'
并且在值字段上执行replace
?然后是for
循环中的其他两个集合。你知道吗
它遍历元组
('<', '{'), ('>', '}'), (' ', '_')
的元组,并将s
和r
分别“解包”为元组中的第一个和第二个元素。你知道吗然后它做一个替换,最终用
{
等替换<
第一个代码
for s, r in (('<', '{'), ...)
将<
分配给s
,{
分配给r
,并在下一次迭代中分配下一项(元组解包)。你知道吗在循环内
str.replace
返回一个新字符串,该字符串用r
替换了所有出现的s
。所以它意味着用{
替换<
,用}
,with
_
替换>
。你知道吗但是,不是这样,因为
str.replace
返回一个新字符串,不会替换原来的字符串。你知道吗为了正确起见,它应该将返回值赋回。方法应该返回替换的字符串。你知道吗
顺便说一句,这里有更有效的方法。你知道吗
您可以使用^{} 。你知道吗
在Python2.x中,使用^{} :
在python 3.x中:
第二个代码
第二部分是^{} 和generator expression:
这是从获取的行中获取
name
、value
值以生成新字典。你知道吗对于
clean_param_value
的固定版本,它将产生如下结果:词典理解:
相关问题 更多 >
编程相关推荐