python operator模块_python operator模块

前言

在python2中,有一个cmp函数用于对比两个对象,但是在python3中已经被舍弃,其功能集成到了operator模块。

例子

import operator

# 1. int, equal

res = operator.eq(2, 2)

# 2. int, lt(小于)

res = operator.lt(1, 2)

# 3. int, le(小于等于)

res = operator.le(2, 2)

# 4. custom obj

class MyObj(object):

def __init__(self, a):

self.a = a

a1, a2 = MyObj(1), MyObj(1)

res = operator.eq(a1, a2)

print(id(a1), id(a2)) # 输出id不同

print(res) # False

# 5. singleton obj

class Singleton(object):

def __new__(cls, *args, **kwargs):

if not hasattr(cls, "_instance"):

cls._instance = super().__new__(Singleton)

return cls._instance

s1, s2 = Singleton(), Singleton()

res = operator.eq(s1, s2)

print(id(s1), id(s2)) # 输出id相同,是同一对象

print(res) # True

这里主要对自定义类进行测试,自定义类分为两种,一种是单例模式类产出的对象,另一种是非单例模式产出的对象。

单例对象,operator.eq永远返回True,因为eq是根据id来判断是否为同一对象的。

同理,非单例对象,operator.eq永远返回False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值