Aym*_*ieh 168
虽然从技术上讲你无法在Python中定义新的运算符,但这个聪明的黑客可以解决这个限制.它允许您定义这样的中缀运算符:
# simple multiplication
x=Infix(lambda x,y: x*y)
print 2 |x| 4
# => 8
# class checking
isa=Infix(lambda x,y: x.__class__==y.__class__)
print [1,2,3] |isa| []
print [1,2,3] <<isa>> []
# => True
Run Code Online (Sandbox Code Playgroud)
bil*_*jmc 10
Sage提供此功能,主要使用@Ayman Hourieh描述的"聪明的黑客",但作为装饰器整合到模块中以提供更清晰的外观和附加功能 - 您可以选择操作员过载,从而选择评估顺序.
from sage.misc.decorators import infix_operator
@infix_operator('multiply')
def dot(a,b):
return a.dot_product(b)
u=vector([1,2,3])
v=vector([5,4,3])
print(u *dot* v)
# => 22
@infix_operator('or')
def plus(x,y):
return x*y
print(2 |plus| 4)
# => 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45265 次 |
| 最近记录: |