我目前正在编写一些通常具有以下模式的代码:
class Thing2:
defaults = {
'on':1,
'off': 0
}
def something(self, k, v):
v = self.defaults.get(v, v)
print(f'SET {k} {v}')
但是,发生在我身上的我可以通过执行以下操作来缩短{{1}}语句:
{{1}}
这很方便,但这是不好的做法吗?
答案 0 :(得分:1)
可以将泛型if语句替换为更具体的条件。它使意图更清晰,更简洁。
但是您在这里也进行了细微的类型更改,因为默认键和值是不同的。以后可能会引起问题。
例如,如果您设置v = defaults.get(v, v)
并且存在默认值,则可以将其从字符串更改为整数。如果您将它们视为仅可打印的对象,那就很好。但是,如果您打算继续对它们进行计算,那将非常重要。
所以问一个问题:我要改变这种东西的类型吗?如果答案是肯定的,请找到另一个名字。否则就可以了。
做到这一点,这很好,您正在打印可打印的东西:
class Thing2:
defaults = {
'on':1,
'off': 0
}
def something(self, k, v):
v = self.defaults.get(v, v)
print(f'SET {k} {v}')
这不行,您要更改类型
class Thing3:
defaults = {
'on':1,
'off': 0
}
def something(self, k: int, v):
v = self.defaults.get(v, v)
return k + v
print("The total is: " + thing.something(10, 'on')) # TypeError probably
这没关系,因为类型不变
class Thing4:
defaults = {
'on':"1"
'off': "0"
}
def something(self, k, v):
v = self.defaults.get(v, v)
return k + v
print(thing.something('The result is: ' + 'on')