자신의 언어로 독특하게 만드는 파이썬의 특징은 무엇입니까? 나는 좋은 것에서 나쁜 것, 유용한 것, 방해에 대한 구문, 실제 사용에 이르기까지 모든 종류의 특성을 찾고 있지만 모호하지 않은 관찰은 일반 개발자에게 가장 유용합니다.
나는 여기에 새로운 사람이므로 직관적 인 것들을 설명해야 할 수도 있습니다 ....
자신의 언어로 독특하게 만드는 파이썬의 특징은 무엇입니까? 나는 좋은 것에서 나쁜 것, 유용한 것, 방해에 대한 구문, 실제 사용에 이르기까지 모든 종류의 특성을 찾고 있지만 모호하지 않은 관찰은 일반 개발자에게 가장 유용합니다.
나는 여기에 새로운 사람이므로 직관적 인 것들을 설명해야 할 수도 있습니다 ....
답변:
당신은 절대적으로 독특한 기능을 찾는 데 어려움을 겪을 것 입니다. 존재하는 대부분의 언어 기능은 처음부터 여러 언어로 채택되었습니다. 일부는 새롭고 여전히 불명확하거나 정당한 이유로 사망했기 때문에 드물게 나타날 수 있습니다. 그럼에도 불구하고 기능 조합을 살펴 보는 것이 좋습니다.
즉, Python의 여러 기능은 상대적으로 고유 한 조합을 만들어야합니다. 적어도 나는 대부분 중복되는 기능 세트를 가진 원격 언어가 대중적이며 실용적이라는 것을 알지 못합니다. 주석에서 언급했듯이 Ruby는 매우 가깝지만 그럼에도 불구하고 많은 차이점이 있습니다.
attr = SomeDataType()코드의 톤이 자동으로 생성됩니다. 이것의 예는 Django의 "models" 입니다.O(1)않고 공간 효율적인 ( 중간 결과를위한 공간은 자연스럽게 따라 오는 경우가 많으며 실제로는 한 번에 메모리에 모든 항목이 필요한 작업은 거의 없습니다), 컴포저 블 데이터 크 런칭이 훨씬 쉬워졌습니다.O(1)명시 적으로 결과를 유지하지 않으면 공간을 차지함 ).yield주로 이터레이터 (여기서는 제너레이터라고 함)를 작성하는 것이 훨씬 좋습니다. 그들은 모든 종류의 제어 흐름을 지원하는 위의 큰 형제입니다. C #은 동일한 키워드로 비슷한 것을 가지고 있습니다. 그러나 yield어려운 문제를 겪고있는 영리한 사람들에 의해 잘 활용되고있는 제한된 종류의 코 루틴 (예 : 루아는 더 정교한 지원을 제공)을 지원하기 위해 과부하 상태입니다. 내 머리 꼭대기의 두 가지 예 : 백 트레이싱을 사용하고 스택 제한이 없고 비동기 I / O (편리한 구문)가있는 재귀 강하 구문 분석 .for key, value in mapping.items()바꾸거나 반복 할 때조차도 알려진 길이 (정직하게는 대부분 튜플)의 반복 가능한 값을 여러 변수에 풀 수 있습니다. 3.x부터는 단일 항목을 사용하는 변수 몇 개와 남아있는 항목을 취하는 변수 몇 개를 지정할 수 있으므로 길이를 알 수없는 컬렉션에도 실용적입니다 first, *everything_in_between, last = values.propery객체로 감싸는 작은 함수를 작성했습니다 .*args와 **kwargs, 매개 변수 튜플 및 dicts을지도하는 고통 방법 등 .
파이썬을 독특하게 만드는 유일한 것은 그것이 노출하는 기능의 특정 조합이라고 생각합니다. 이것은 대부분의 프로그래밍 언어에 해당됩니다.
또는 하나의 작은 일이있을 수 있습니다 : 파이썬이 self다른 언어로 수행되는 객체 멤버 함수에 공식 매개 변수로 명시 적으로 전달하는 방식을 보지 못했습니다 . 그것은 작은 일이며, 이것이 이것이 실제로 어떻게 바뀌는지는 알 수 없습니다.
그러나 나는 파이썬에 유창하지 않기 때문에 내가 놓친 것들이있을 수 있습니다!
docstring을 자동으로 처리하여 소유자의 속성이됩니다. 일반적으로 파이썬의 훌륭한 내부 검사 기능은 help () 사용부터 __doc__객체의 일류 속성으로 사용하는 기능에 이르기까지 매우 독특한 언어 입니다. 예를 들면 다음과 같습니다.
>>> class DocStringException(Exception):
... """Error message is the same as docstring"""
... def __str__(self):
... return repr(self.__doc__)
...
>>> class ExampleException(DocStringException):
... """An example happened"""
...
>>> raise ExampleException
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.ExampleException: 'An example happened'
다른 유용한 내부 검사 기능 :
Generator Expressionsinput()설명해 드리겠습니다. 언제나 지금까지 언어를 보지 못했습니다. 여기서 무언가를 인쇄하는 명령문에 값을 할당 할 수 있습니다. 루비와 비슷 print/gets하지만 인쇄에 값이 할당 된 대신 다음과 같습니다.print "Foo" bar = getsyieldordereddict, namedtuple, array, list, tuple, dictionary문제는, 파이썬은 구문 적 오버 헤드가 극히 적은 언어로 극소수의 표현력을 제공합니다 :리스트 / 세트 / dict 이해력, 수율, 데코레이터, 평가, 메타 클래스 프로그래밍, 내성, 최적화 된 내장 데이터 구조 (리스트, dicts, sets), 그 모든 것들이 당신에게 (개발자) 생각할 수있는 한 간결하고 우아한 코드로 생각을 표현할 수있는 힘을주는 아주 좋은 방법으로 공모합니다. 이 킬러 기능 세트가 결합 된 다른 언어는 생각할 수 없습니다.
if 문과 루프를 묶는 데 들여 쓰기를 사용한다고 말하고 싶습니다. 다른 언어로는 보지 못했습니다.
파이썬 코드를 난독 화하기가 훨씬 어렵 기 때문에 매우 편리하다고 생각합니다!
또한 함수를 제외하고는 깔끔하게 한 줄씩 실행하는 것처럼 보이며, 또한 그렇게 해석 될 수 있습니다.