网站首页 > 基础教程 正文
平时我们使用+-*、来实现加法减少乘法除法,用><=来 实现比较 操作,其实在Python中这些运算符都有对应 的函数替代写法。
operator 模块包含的方法
import operator
a =1
b =3
result = operator.lt(a, b)
print(result)
result = operator.le(a, b)
print(result)
result = operator.eq(a, b)
print(result)
result = operator.ne(a, b)
print(result)
result = operator.ge(a, b)
print(result)
result = operator.gt(a, b)
print(result)
result = operator.__lt__(a, b)
print(result)
result = operator.__le__(a, b)
print(result)
result = operator.__eq__(a, b)
print(result)
result = operator.__ne__(a, b)
print(result)
result = operator.__ge__(a, b)
print(result)
result = operator.__gt__(a, b)
print(result)
True
True
False
True
False
False
True
True
False
True
False
False
比较两个列表:
# 导入 operator 模块
import operator
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))
print("operator.eq(c,b): ", operator.eq(c,b))
运算符函数
operator 模块提供了一套与 Python 的内置运算符对应的高效率函数。例如,operator.add(x, y) 与表达式 x+y 相同。
实际上平时很多运算符可以用对应的函数替换
运算 | 语法 | 函数 |
加法 | a + b | add(a, b) |
字符串拼接 | seq1 + seq2 | concat(seq1, seq2) |
包含测试 | obj in seq | contains(seq, obj) |
除法 | a / b | truediv(a, b) |
除法 | a // b | floordiv(a, b) |
按位与 | a & b | and_(a, b) |
按位异或 | a ^ b | xor(a, b) |
按位取反 | ~ a | invert(a) |
按位或 | a | b | or_(a, b) |
取幂 | a ** b | pow(a, b) |
标识 | a is b | is_(a, b) |
标识 | a is not b | is_not(a, b) |
索引赋值 | obj[k] = v | setitem(obj, k, v) |
索引删除 | del obj[k] | delitem(obj, k) |
索引取值 | obj[k] | getitem(obj, k) |
左移 | a << b | lshift(a, b) |
取模 | a % b | mod(a, b) |
乘法 | a * b | mul(a, b) |
矩阵乘法 | a @ b | matmul(a, b) |
取反(算术) | - a | neg(a) |
取反(逻辑) | not a | not_(a) |
正数 | + a | pos(a) |
右移 | a >> b | rshift(a, b) |
切片赋值 | seq[i:j] = values | setitem(seq, slice(i, j), values) |
切片删除 | del seq[i:j] | delitem(seq, slice(i, j)) |
切片取值 | seq[i:j] | getitem(seq, slice(i, j)) |
字符串格式化 | s % obj | mod(s, obj) |
减法 | a - b | sub(a, b) |
真值测试 | obj | truth(obj) |
比较 | a < b | lt(a, b) |
比较 | a <= b | le(a, b) |
相等 | a == b | eq(a, b) |
不等 | a != b | ne(a, b) |
比较 | a >= b | ge(a, b) |
比较 | a > b | gt(a, b) |
接着我们写代码对比一下
>>> import operator
>>> operators = {
... "+": operator.add,
... "-": operator.sub,
... "*": operator.mul,
... "/": operator.truediv,
... }
>>> def perform_operation(op_string, number1, number2):
... return operators[op_string](number1, number2)
...
>>> perform_operation("-", 10, 5)
5
也可以自己实现四则运算
>>> operators = {
... "+": lambda a, b: a + b,
... "-": lambda a, b: a - b,
... "*": lambda a, b: a * b,
... "/": lambda a, b: a / b,
... }
使用 methodcaller(调用对象的方法
>>> from dataclasses import dataclass
>>> @dataclass
... class Musician:
... id: int
... fname: str
... lname: str
... group: str
...
... def get_full_name(self, last_name_first=False):
... if last_name_first:
... return f"{self.lname}, {self.fname}"
... return f"{self.fname} {self.lname}"
调用 get_full_name方法的推优,不通过ojb.methondname()的方式
>>> import operator
>>> first_last = operator.methodcaller("get_full_name")
>>> for person in group_members:
... print(first_last(person))
...
Brian Wilson
Carl Wilson
Dennis Wilson
Bruce Johnston
Hank Marvin
Bruce Welch
如果大家用过这种方式,其实有点像Java编程语言的反射
猜你喜欢
- 2024-10-31 如何用 GitHub Actions 写出高质量的 Python代码?
- 2024-10-31 Python集成ActiveMQ,异步发送处理消息,详细代码手把手操作
- 2024-10-31 python 魔法方法连载三 __setattr()__
- 2024-10-31 CentOS 7下编译安装Python3 centos7安装python3.7
- 2024-10-31 3分钟掌握Python 中的集合 python中集合的概念
- 2024-10-31 Python3 集合 python 集合 discard
- 2024-10-31 群晖安装python3 群晖安装python3.7
- 2024-10-31 Python的设计还是很精妙的,三分钟理解__get__和__set__
- 2024-10-31 十六、Python集合set常用方法 python set集合和list集合的区别
- 2024-10-31 python数据类型-集合set python set集合取值
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)