python - 엔터입력 - 파이썬 공백 넣기



파이썬:내 사업자 정의? (4)

내 운영자를 정의하고 싶습니다. 파이썬은 그런 것을 지원합니까?

https://ffff65535.com


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

자세한 내용 은 Sage 설명서 와이 향상된 기능 추적 티켓 을 참조하십시오.


기술적으로는 파이썬에서 새로운 연산자를 정의 할 수 없지만,이 똑똑한 해킹 은이 한계를 해결합니다. 그것은 중위 연산자를 다음과 같이 정의 할 수있게합니다 :

# 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


특정 클래스의 객체에 연산을 적용하려는 경우 가장 가까운 함수와 일치하는 연산자를 재정의 할 수 있습니다. 예를 들어 __eq__() 무시 __eq__()== 연산자를 재정 의하여 원하는 값을 반환합니다. 이것은 거의 모든 운영자에게 적용됩니다.





operators