.eq(), hash(), abs(), angle(), format(), add(), mul() 메서드가 각각 제너레이터 표현식을 사용하고 메서드에서 지능형 리스트를 사용해도 제대로 작동하겠지만, 중간의 리스트 값을 저장하기 위한 메모리를 더 많이 사용한다.
제너레이터 함수는 융통성이 높기에 여러 문장으로 구성된 복잡한 논리를 구현할 수 있고 코루틴으로 사용도 가능하다.
**제너레이터 표현식을 함수나 생성자에 단일 인수로 전달할 때는 함수를 호출하는 괄호 안에서 제너레이터 표현식을 괄호로 에워쌀 필요가 없고 mul() 메서드에서 Vector() 생성자를 호출할 때 본 것처럼 한 쌍의 괄호만 사용하면 된다.
def __mul__(self, scalar):
if isinstance(scalar, numbers, Real):
return Vector(n * scalar for n in self)
else:
return NotImplemented