Python中如何将布尔比较运算符赋值给变量?
问题解答
你想要的那种直接将运算符符号存为字符串,然后像代码一样拼接使用的写法不可行,Python无法识别这种语法,会直接抛出语法错误。
要实现不重复代码的需求,你可以用以下两种方法:
方法1:使用operator模块的内置函数
Python的operator模块提供了对应各种比较运算符的函数,直接赋值给变量即可调用:
import operator up_down: bool = True # 根据up_down选择对应的比较函数 if up_down: comp1 = operator.gt # 对应 > comp2 = operator.ge # 对应 >= else: comp1 = operator.lt # 对应 < comp2 = operator.le # 对应 <= # 调用函数完成比较 flag1 = comp1(data['foo'], data['foo'].shift(x)) flag2 = comp2(data['foo'], data['foo2'])
方法2:自定义lambda函数
如果不想导入模块,也可以用lambda函数直接定义比较逻辑:
up_down: bool = True if up_down: comp1 = lambda a, b: a > b comp2 = lambda a, b: a >= b else: comp1 = lambda a, b: a < b comp2 = lambda a, b: a <= b # 调用lambda函数完成比较 flag1 = comp1(data['foo'], data['foo'].shift(x)) flag2 = comp2(data['foo'], data['foo2'])
这两种写法都能避免重复代码,逻辑和你最初的需求完全一致,且符合Python语法规范。
内容的提问来源于stack exchange,提问作者Jakub Szurlej
相关产品推荐
相关产品推荐

