假设您按如下方式链接符号:
iff = chr(8801)
然后在几个空格中编写所有算法的代码。现在假设您确定以下符号几乎具有与前一个符号相同的所有属性:
jiff = chr(10231)
而不是返回并更改每个实例:
if b == iff:
到
if b in [iff, jiff]:
我反而想知道是否有一些正则表达式,我可以使它成为前代码
if b == iff:
如果b是= iff或jiff,将注册为true。我在考虑一些正则表达式,但你仍然需要改变每个实例:
if b == iff:
答案 0 :(得分:0)
我只会改变所有实例;从设计的角度来看,这可能会使您的生活更加轻松,并且不会混淆阅读代码的人,这与其他选择不同。但是为了避免再次犯同样的错误,你可以得到一个可接受的符号列表:
accept = [iff, jiff]
...
if b in accept:
...
现在您只需要在一个地方修改符号。
如果确实想要避免更改该if
- 语句的所有实例,则可以使iff
成为覆盖__eq__
以返回的特殊对象如果符号为iff
或jiff
,则为true:
class Sym:
def __eq__(self, s):
return s in (chr(8801), chr(10231))
iff = Sym()
(但如果在其他地方使用iff
,如果需要实际的字符串,这将会中断。)