我想用比较/成员运算符作为参数比较函数中的两个字符串。
string1 = "guybrush"
string2 = "guybrush threepwood"
def compare(operator):
print(string1 operator string2)
compare(==)
应打印False
,然后
compare(in)
应打印True
显然不是这样。我可以将变量分配给运算符,还是要解决该问题?
答案 0 :(得分:5)
您不能直接传递运算符,您需要像这样的函数:
from operator import eq
string1 = "guybrush"
string2 = "guybrush threepwood"
def compare(op):
print(op(string1, string2))
compare(eq)
>>>False
in运算符比较棘手,因为operator
没有in
运算符,但是确实有contains
operator.contains(a, b)
与b in a
相同,但是由于设置了字符串的顺序,因此在您的情况下将不起作用。在这种情况下,您可以定义自己的函数:
def my_in(a, b): return a in b
compare(my_in)
>>>True