그치. 나도 Fluent Python 읽어봐서 익히 알고 있었음. 인덱싱만 구현해주면 sum이나 max 같은건 알아서 구현해주고 뭐 그런식이잖아.
익명(14.50)2021-10-07 14:42
답글
요지는 built in으로 구현된 sum max len 이런 함수들은 원하면 직접 각 클래스의 메서드로 구현 가능하지만, 굳이 이렇게 구현해둔 이유는 interpreted될 일 없이, C로 바로 구현되어 있는 덕분에 성능상에 이점이 있음. 멋있는것과 별개로 필요하다 생각함
익명(125.251)2021-10-07 14:42
답글
책에서 말하기를, 파이썬은 완벽한 개념의 구현보다는 실용성을 위해 몇가지 예외를 둔 지점이 있다고 했음. 예전에는 몰랐는데, sum max 등의 내장함수가 딱 그런 느낌이구나 하는 생각이 들었어. 객체지향 규칙에서 잠깐 벗어나서 최적화를 위해 동작하는 그런 느낌.
무슨 소린지 이해안되는데 설명점
built in scope에 sum, max함수 있는것보다 각 유효한 클래스마다 메서드로 만드는게 좋겠단 뜻임? sum(foo) -> foo.sum() 이렇게?
ㅇㅇ 맞음
sqlalchemy 같은거 보면 그런 식으로 작동하잖아. 파이프라인 느낌으로다가. 그게 더 익숙하게 느껴지더라.
오히려 내장함수로 불러야 하는거랑, 메소드로 불러야 하는거랑 각각인거 때문에 헷갈리는게 많은거 같음.
반복 가능한 객체를 처리하는 방식이 좀 애매해서 아쉬운게 있는거 같음. 인덱싱이나 연산자 오버라이딩 생각해보면 현재 방식이 더 나은것 같기도 하고.. 모르겠다.
원하면 너가 각 클래스마다 .sum() 메서드 구현하면 됨. 근데 built in sum max이런애들은
https://stackoverflow.com/questions/24578896/python-built-in-sum-function-vs-for-loop-performance
최적화 되어있어서 너가 구현하는것보다 2배가량 빠를거야
그치. 나도 Fluent Python 읽어봐서 익히 알고 있었음. 인덱싱만 구현해주면 sum이나 max 같은건 알아서 구현해주고 뭐 그런식이잖아.
요지는 built in으로 구현된 sum max len 이런 함수들은 원하면 직접 각 클래스의 메서드로 구현 가능하지만, 굳이 이렇게 구현해둔 이유는 interpreted될 일 없이, C로 바로 구현되어 있는 덕분에 성능상에 이점이 있음. 멋있는것과 별개로 필요하다 생각함
책에서 말하기를, 파이썬은 완벽한 개념의 구현보다는 실용성을 위해 몇가지 예외를 둔 지점이 있다고 했음. 예전에는 몰랐는데, sum max 등의 내장함수가 딱 그런 느낌이구나 하는 생각이 들었어. 객체지향 규칙에서 잠깐 벗어나서 최적화를 위해 동작하는 그런 느낌.
화살표 함수만 제대로 넣어주면 더 바랄거 없겠다.
아 dunder 아시는구나!
아 트레잇 아시는구나