, 우리는 할 수 있습니다파이썬에서 문자열을 숫자로 곱할 수는 있지만 문자열과 숫자를 추가 할 수없는 이유는 무엇입니까? 파이썬에서
'a' * 4
가 'AAAA'를 얻을 수 있습니다.
우리는 할 수 없습니다
'a' + 4
우리는 먼저 문자열로 (4)를 캐스팅해야합니다.
String 및 Int arg에 대한 정의를 *로 오버로드하고 String 및 Int에 대해 + 오버로드하지 않으려면이 임의의 선택입니까?
필자는 위 예제에서 4를 문자열로 변환하지 않는 것처럼 암시 적 유형 변환을 수행하지 않는 언어로 정의하면 '강하게 입력 된'것으로 간주되는 파이썬에 어떻게 들어 맞는지 이해하려고합니다. 따라서 첫 번째 예에서는 연산자 오버로딩의 예이며 암시 적 변환이 아닙니다.
문서에서 나는 Int와 String을 취하는 mul이나 *의 정의를 찾을 수 없으며 2 개의 Ints를 취하는 양식 만 찾을 수 있습니다. 과부하 된 정의가 무엇인지 어떻게 알 수 있습니까?
참조: https://docs.python.org/2/library/operator.html
'int * str'은 라이브러리 참조가 아니라 언어 참조 문서에있는 [here] (https://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations) 문서입니다. (이 작업은 int와 시퀀스로 정의되며 문자열은 일종의 시퀀스입니다.) – jwodder
[라이브러리 문서의 시퀀스에 대한 자세한 내용] (https://docs.python.org/2/library) /stdtypes.html#typesseq)에 작업 목록이 있습니다. –
다른 질문에 대답하려면 입력 정의보다 오버로드와 관련이 있습니다. '+'연산자는 일부 시퀀스 (예 : 문자열)가 연결을 의미하거나 목록이 추가되도록 오버로드됩니다. –