如何在Python中定义新算术运算符?实现A?B=A^(1/B)
在Python中实现类似R的自定义
?运算符功能 Python无法直接定义?作为二元运算符,原因有两点:
?在Python(尤其是交互式环境如IPython)中是内置的帮助查询符号,有固定用途;- Python的运算符重载机制仅支持重载现有运算符(如
+、*、@等),不允许新增自定义运算符符号。
不过可以通过以下两种替代方案实现相同的计算逻辑:
方案一:定义普通函数
直接写一个函数来实现A的1/B次方的计算,用法简单直观:
def root(a, b): return a ** (1 / b) # 调用示例 print(root(4, 2)) # 输出 2.0
方案二:重载现有运算符(如@)
如果偏好类似运算符的写法,可以选择一个不常用的现有运算符(比如矩阵乘法运算符@),通过自定义类重载它:
class CustomNum: def __init__(self, val): self.val = val def __matmul__(self, other): # 用@代替目标的?运算符 return self.val ** (1 / other.val) # 使用示例 a = CustomNum(4) b = CustomNum(2) print(a @ b) # 输出 2.0
内容的提问来源于stack exchange,提问作者Macosso
相关产品推荐
相关产品推荐

