Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以在基于布尔值的逻辑运算符之间进行交换?_Python_Numerical Methods - Fatal编程技术网

Python 有没有一种方法可以在基于布尔值的逻辑运算符之间进行交换?

Python 有没有一种方法可以在基于布尔值的逻辑运算符之间进行交换?,python,numerical-methods,Python,Numerical Methods,我正在实现一个括号函数进行练习。该功能将精确定位某个功能的最小值或最大值之间的范围 为了给出标识最小值或最大值的选项,我允许用户传入一个布尔值findMin 以下代码块标识最小值;此块与标识最大值的块之间的唯一区别是,必须相互交换比较运算符(“”)。我可以通过插入相同的代码块(但对于交换的比较运算符)轻松地进行交换,该代码块由if语句处理,而if语句仅在用户希望找到最大值时输入。不必添加另一个这样的代码块,有没有办法交换比较运算符“” def括号(func,x,findMin,步长=0.001)

我正在实现一个括号函数进行练习。该功能将精确定位某个功能的最小值或最大值之间的范围

为了给出标识最小值或最大值的选项,我允许用户传入一个布尔值findMin

以下代码块标识最小值;此块与标识最大值的块之间的唯一区别是,必须相互交换比较运算符(“”)。我可以通过插入相同的代码块(但对于交换的比较运算符)轻松地进行交换,该代码块由if语句处理,而if语句仅在用户希望找到最大值时输入。不必添加另一个这样的代码块,有没有办法交换比较运算符“”

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