Python 有没有一种方法可以在基于布尔值的逻辑运算符之间进行交换?
我正在实现一个括号函数进行练习。该功能将精确定位某个功能的最小值或最大值之间的范围 为了给出标识最小值或最大值的选项,我允许用户传入一个布尔值findMin 以下代码块标识最小值;此块与标识最大值的块之间的唯一区别是,必须相互交换比较运算符(“”)。我可以通过插入相同的代码块(但对于交换的比较运算符)轻松地进行交换,该代码块由if语句处理,而if语句仅在用户希望找到最大值时输入。不必添加另一个这样的代码块,有没有办法交换比较运算符“”Python 有没有一种方法可以在基于布尔值的逻辑运算符之间进行交换?,python,numerical-methods,Python,Numerical Methods,我正在实现一个括号函数进行练习。该功能将精确定位某个功能的最小值或最大值之间的范围 为了给出标识最小值或最大值的选项,我允许用户传入一个布尔值findMin 以下代码块标识最小值;此块与标识最大值的块之间的唯一区别是,必须相互交换比较运算符(“”)。我可以通过插入相同的代码块(但对于交换的比较运算符)轻松地进行交换,该代码块由if语句处理,而if语句仅在用户希望找到最大值时输入。不必添加另一个这样的代码块,有没有办法交换比较运算符“” def括号(func,x,findMin,步长=0.001)
def括号(func,x,findMin,步长=0.001):
#确定哪个方向是向下的
增量=0.001
如果func(x+步长)>func(x):
步长*=-1
增量*=-1
指针=x+步长
上一个指针=x
而(func(指针)
在python中,可以使用将比较运算符表示为函数
例如,表达式1>2
相当于调用operator.gt(1,2)
这是一种将其传递给函数的方法:
import operator
def test(arg1, arg2, compare_function):
if compare_function(arg1, arg2):
print("condition is true")
else:
print("condition is false")
输出:
>>> test(1, 2, operator.lt)
condition is true
>>> test(1, 2, operator.gt)
condition is false
您可以使用以下类:
Operator Method
== __eq__()
!= __ne__()
> __gt__()
>= __ge__()
< __lt__()
<= __le__()
运算符方法
===\uuuuueq\uuuuu()
!= __ne_uuuuu()
>_uugt_uuu()
>=\uuuu ge\uuuuu()
<\uuuu lt\uuuuuuuuuuuuuuuuuuuu()
Y
Out[4]:假
在[5]中,gyou可以使用相同的方法来寻找最小值,并找到与在相同时间间隔内找到函数负数的最小值相等的最大值,因此可以使如果不是findMin:func=lambda x:-func(x)
Operator Method
== __eq__()
!= __ne__()
> __gt__()
>= __ge__()
< __lt__()
<= __le__()
class foo(object):
"""It's fun to override """
def __init__(self, name):
self.name=name
def __gt__(self, other):
# Write your logic here ...
return self.name < other.name
In [2]: g = foo(6)
In [3]: y = foo(4)
In [4]: g>y
Out[4]: False
In [5]: g<y
Out[5]: True