문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Python (문단 편집) === 디자인 철학 === '가장 아름다운 하나의 답이 존재한다'를 기본으로 하고 있다.[* [[Perl]]의 '하나 이상의 해결법이 존재한다'와 대비된다.] 예를 들어 팩토리얼 함수는 다음과 같이 간결히 나타낼 수 있다. 이 예시에서는 프로그래밍 초보자들을 헷갈리게 하는 3항 연산자(Ternary operator)도 쉽게 읽혀 Python의 "실행할 수 있는 의사 코드"라는 별명을 다시금 느낄 수 있다.[* C와 Java에서 쓰이는 3항 연산자(ternary operator) {{{?:}}}에 비해 라틴어 권에서는 훨씬 직관적이다. 라틴어권 사용자들에게 직관적인 이유는 'A if B (B라면 A다)'라는 식으로 조건을 뒤에 표기하는 언어가 많기 때문인데, 한국을 포함한 다른 언어권이라면 조건 여부에 따라 참:거짓으로 구분되는 3항 연산자 표기가 이해하기가 더 편하다. 거기에 더불어 {{{ ? : }}}에 비해 {{{ if else }}} 형태로 입력이 길어지는 부분을 싫어하는 경우도 있다.] {{{#!syntax python def factorial(x): return 1 if x == 0 else x * factorial(x - 1) }}} [* 더 쉽게는 {{{#!syntax python def factorial: return 1 if x == 0 else x * factorial(x - 1)}}} 과 {{{#!syntax python factorial = lambda x: 1 if x == 0 else x * factorial(x - 1)}}}이런 식도 가능하다] 이것은 남이 작성한 코드를 내가 읽고 이해해야 하는 경우 아주 절실히 느낄 수 있다. [[https://www.python.org/dev/peps/pep-0020/|PEP 20]]에서 제시된 Python 기본 철학(The Zen of Python)에 자세히 나열되어 있다. > 1. 아름다운 것이 추한 것보다 낫다. (Beautiful is better than ugly.) > 1. 명시적인 것이 암시적인 것보다 낫다. (Explicit is better than implicit.) > 1. 간결한 것이 복합적인 것보다 낫다. (Simple is better than complex.) > 1. 복합적인 것이 복잡한 것보다 낫다. (Complex is better than complicated.) > 1. 수평적인 것이 내포된 것보다 낫다. (Flat is better than nested.) > 1. 여유로운 것이 밀집한 것보다 낫다. (Sparse is better than dense.) > 1. 가독성은 중요하다. (Readability counts.) > 1. 특별한 경우들은 규칙을 어길 정도로 특별하지 않다. (Special cases aren't special enough to break the rules.) > 1. 허나 실용성은 순수성을 이긴다. (Although practicality beats purity.) > 1. 오류는 절대로 조용히 지나가지 않는다. (Errors should never pass silently.) > 1. 명시적으로 오류를 감추려는 의도가 아니라면. (Unless explicitly silenced.) > 1. 모호함을 대할 때, 이를 추측하려는 유혹을 거부하라. (In the face of ambiguity, refuse the temptation to guess.) > 1. 명확한, 그리고 가급적이면 유일한 하나의 방법은 항상 존재한다. (There should be one-\- and preferably only one -\-obvious way to do it.) > 1. 비록 그 방법이 처음에는 명확해 보이지 않을지라도[* 원문에는 "네덜란드인이 아닌 이상" 이라는 농담조의 조건이 붙는데, 아마도 Python의 창시자인 귀도 반 로섬을 두고 하는 얘기로 보인다.]. (Although that way may not be obvious at first unless you're Dutch.) > 1. 지금 행동에 옮기는 것이 아예 안 하는 것보다는 낫다. (Now is better than never.) > 1. 비록 아예 안 하는 것이 지금 *당장* 하는 것보다 나을 때도 많지만. (Although never is often better than *right* now.) > 1. 구현 결과를 설명하기 쉽지 않다면, 그것은 나쁜 아이디어이다. (If the implementation is hard to explain, it's a bad idea.) > 1. 구현 결과를 설명하기 쉽다면, 그것은 좋은 아이디어일지도 모른다. (If the implementation is easy to explain, it may be a good idea.) > 1. 네임스페이스를 사용하는 것은 완전 좋은 생각이다! (Namespaces are one honking great idea -- let's do more of those!) 따라서 다른 언어들의 코딩 스타일은 각자의 취향에 맞게 [[발산 진화]]하는 반면, Python은 위의 철학들을 만족시키는 하나의 스타일로 [[수렴 진화]]하는 성향이 있다.[* 실제로 C 계열의 언어에서 중괄호의 위치에 대한 논쟁은 거의 종교적 논쟁에 가깝다. 현재 한국에서 가장 많이 쓰이는 방식은 C언어의 창시자 Kernighan과 Ritchie의 K&R 스타일이다. 그러나 Eric Allman의 방식을 고수하는 사람들도 제법 많다. 이외에도 중괄호 위치를 정하는 다른 방법들이 있다. --그리고 흔치는 않지만 몇몇 사람들은 그냥 들여쓰기고 뭐고 다 무시하고 쭉 작성해 놓기도 한다.--] 이런 성향은 다른 언어에는 없는 Python스러움('''pythonic''')이라는 독특한 개념을 낳게 되었는데, 복잡하지 않으면서 의미가 명확하고, 코드의 축약보다 뚜렷하게 보이는 흐름을 중시하는 Python의 철학을 지칭하는 개념이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기