복붙노트

[PYTHON] 파이썬에서 '>> 0이 참인 이유는 무엇입니까?

PYTHON

파이썬에서 '>> 0이 참인 이유는 무엇입니까?

파이썬 2.6.4 :

>> ''>0
True

왜 그런가요?

해결법

  1. ==============================

    1.임의의 객체에 대한 순서 비교를 허용하는 원래의 설계 동기는 이기종 목록을 정렬 할 수있게하는 것이 었습니다. 유용하게도 모든 문자열을 알파벳 순서로 나란히 놓았고 모든 숫자는 숫자 순서대로 배열했습니다. 두 블록이 먼저 왔을 때 언어에 의해 보장되지 않았습니다. 예를 들어, O (N log N) 최악의 시간에 모든 목록 (심지어 해시가 허용되지 않는 항목이있는 항목)의 고유 항목 만 가져올 수있었습니다.

    임의의 객체에 대한 순서 비교를 허용하는 원래의 설계 동기는 이기종 목록을 정렬 할 수있게하는 것이 었습니다. 유용하게도 모든 문자열을 알파벳 순서로 나란히 놓았고 모든 숫자는 숫자 순서대로 배열했습니다. 두 블록이 먼저 왔을 때 언어에 의해 보장되지 않았습니다. 예를 들어, O (N log N) 최악의 시간에 모든 목록 (심지어 해시가 허용되지 않는 항목이있는 항목)의 고유 항목 만 가져올 수있었습니다.

    수년에 걸쳐,이 실용적인 배열은 침식되었습니다. 첫 번째 균열은 복잡한 숫자를 비교하고 비교할 수있는 능력이 없어 졌을 때 나타났습니다. 갑자기 모든 목록을 정렬 할 수있는 기능이 사라졌습니다. 목록에 복소수가 포함 된 경우 더 이상 적용되지 않으며 가능하면 다른 유형의 항목과 함께 적용됩니다. 그렇다면 귀도 (Guido)는 이기종 목록을 더 일반적으로 싫어하기 시작했으며 따라서 그러한 목록이 유용하게 분류 될 수 있는지 여부는 중요하지 않다고 생각하기 시작했습니다. 왜냐하면 그러한 목록은 새로운 생각에 따르면 처음부터 존재하지 않아야하기 때문입니다. 그는 그 (것)들을 금지하기 위하여 아무것도를하지 않으며, 그러나 그 (것)들을 지원하는 어떤 타협든지 받아들이는 것을 예정하지 않았다.

    두 가지 변경 사항은 Python의 Zen of Python의 "실용성을 뛰어 넘는 순도"항목에서 조금 벗어나 균형을 이룹니다 (이전에 작성되었지만 복소수가 여전히 순서 비교 될 수있을 때) .- 순도가 조금 더 높았습니다. 조금 덜 실용성.

    그럼에도 불구하고 Guido가 실제로 강력한 후방 호환성을 유지하기를 주장하기 시작했기 때문에 두 임의의 객체를 비교할 수있는 능력은 (오랫동안 복잡한 숫자가 아닌 한 ;-) 남아있었습니다. (실용적이고 순수한 전환 ;-).

    따라서 파이썬 3에서는 오랫동안 원했지만 이전 버전과 호환되지 않는 기능 향상 (특히 특정 작업을 수행 할 수있는 쓸모없고 중복 된 방법의 단순화 및 제거)을 허용하기 위해 강력한 하위 호환성 호환성을 명시 적으로 고의적으로 제거했습니다. 다른 유형의 오류가 발생했습니다.

    그래서이 역사적, 철학적 논문은 기본적으로 "왜"라는 질문에 진정으로 대응할 수있는 유일한 방법입니다 ...! :-)

  2. ==============================

    2.https://docs.python.org/2.7/tutorial/datastructures.html#id1에서

    https://docs.python.org/2.7/tutorial/datastructures.html#id1에서

  3. from https://stackoverflow.com/questions/2384078/why-is-0-true-in-python by cc-by-sa and MIT license