은 무슨 뜻인가요? [닫은]


88

많은 웹 사이트에서 나는 종종 코드가 비단뱀 적이 지 않거나 동일한 목표를 달성하는 더 비단뱀적인 방법이 있다는 의견을 봅니다.

이 맥락에서 비단뱀은 무엇을 의미합니까? 예를 들어, 왜

while i < someValue:
   do_something(list[i])
   i += 1

비단뱀이 아닌 동안

for x in list:
   doSomething(x)

비단뱀인가요?



이것은 주제를 벗어난 질문입니다. 주제에 대해 더 자세히 설명하기 위해 작은 코드 샘플을 제공 할 수 있습니다.
ρss jul.

답변:


103

명확하고 간결하며 유지 관리 할 수있는 코드를 생성하기 위해 Python 언어의 기능을 활용합니다.

Pythonic은 올바른 구문을 얻는 것이 아니라 Python 커뮤니티의 규칙을 따르고 의도 된 방식으로 언어를 사용하는 코드를 의미합니다.

이것은 다른 답변의 링크 된 기사에서와 같이 부정적인 예를 통해 설명하는 것이 가장 쉽습니다. 비 파이썬 코드의 예는 종종 다른 언어의 사용자에게서 비롯됩니다. 목록 이해력이나 생성기 표현식과 같은 파이썬 프로그래밍 패턴을 배우는 대신 C 또는 자바에서 더 일반적으로 사용되는 패턴으로 크로바를 시도합니다. 루프는 특히 이에 대한 일반적인 예입니다.

예를 들어 Java에서는 다음을 사용할 수 있습니다.

for i in (i; i < items.length ; i++)
 {
  n = items[i];
 ... now do something
 }

파이썬에서는 while 루프를 사용하여 이것을 복제 할 수 있지만 사용하는 것이 더 깨끗할 것입니다.

for i in items:
  i.perform_action()

또는 생성기 표현식도

(i.some_attribute for i in items)

그래서 본질적으로 누군가가 무언가 비 파이썬이라고 말할 때, 그들은 코드가 파이썬 코딩 스타일에 더 적합한 방식으로 다시 작성 될 수 있다고 말하는 것입니다.

import this명령 줄에 입력 하면 Python 원칙에 대한 요약이 제공됩니다. 잘 알려지지 않은 것은 소스 코드 import this가 확실하고 설계 상 비 파이썬 적이라는 것입니다! 하지 말아야 할 일의 예를 살펴보십시오.


26
Btw, "import this"의 소스 코드는 다음과 같습니다. github.com/python/cpython/blob/master/Lib/this.py
Gautam

다른 분야의 예는 무엇입니까? 요리, 디자인, 운전 ..?
Daniel Springer

2
좀 더 복잡한 코드의 예를 들어, Vigenere 암호의 "비 파이썬"구현은이 답변에서 점진적으로 "파이썬"으로 만들어집니다 (공개 : 내 코드 및 의견) : stackoverflow.com/questions/2490334/…
Nick

17
나는 여기에 내 사용자 이름 주어진 코멘트를 남겨해야한다고 생각
파이썬

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.