구렁이법이 더 좋은 방법인가요?

여기서 나는pythonic way 인코딩 스타일에 대한 생각을 공유했다.이러한 것들은 어떠한 유형의 모델(경험이 있는 대상 소프트웨어 개발자를 대상으로 하는 최선의 실천)을 설계하는 것이 아니라, 단지 서로 다른 방식으로 코드를 작성하는 몇 가지 방법일 뿐이다. 또는 나는pythonic와 더 비슷하다고 말해야 한다.
아직 모르실 수도 있습니다. 파이톤은 해석적이고 상호작용적이며 대상을 대상으로 하는 프로그래밍 언어입니다.그러나 더 중요한 것은 파이톤은 프로그래밍 언어로 더 빨리 일을 하고 시스템을 더욱 효과적으로 통합시킬 수 있다.
추천하는python 스타일 약속/지침을 모두 배우고 싶으시면 here 배울 수 있습니다.그래서 우리가 이미 알고 있을지도 모르는 것들로부터 시작하자.

교환 가치관
이것은 두 변수 사이에서 값을 교환하는 매우 멋진 방식이다.Python은 임시 변수를 만들지 않습니다.이 모든 것은 창고에서 이루어진 것이다.
a, b = b, a
이런 모듈 해체는 코드를 더욱 읽을 수 있을 뿐만 아니라 상태를 더욱 잘 처리할 수 있다.

리스트 이해
대부분의 시간대python을 사용하는 사람들은 목록 이해를 발견할 수 있다. 이것은 순환을 위한 간략한 문법이다.
a = [i**2 for i in range(10)]
대단합니다. 맞아요. 짧고 간단합니다.새 목록을 되돌려 주지 않고 괄호 () 를 사용하면 생성기 대상을 되돌려줍니다.python의 생성기는 매우 멋있다. 한 번에 하나의 값만 생성할 수 있고 필요한 메모리는 더욱 적다.키워드 'yield' 를 가진python 함수는 생성기라고 할 수 있습니다.생성기가 yield 키워드를 만났을 때 함수의 상태가 동결되고 모든 변수는 다시 생성기를 호출할 때까지 메모리에 저장됩니다.
>>> a = (i**2 for i in range(10))
>>> print(a)
<generator object <genexpr> at 0x0000025CADCFA518>
>>> print(sum(a))
285
이것은pythonic방법의 단점으로 초보자들에게 보편적으로 존재하는 부분이다. 대부분의 초보자들은 필요하지 않아도 네모난 괄호를 자주 사용한다.

복합 비교문
복합문은 하나 이상의'자구'로 구성되어 있다.이 방면의 한 예는
>>> x = 5
>>> 10 < x < 20
False
>>> x = 15
>>> 10 < x < 20
True
>>> x = 25
>>> 10 < x < 20
False
python에서 복합 비교는 간결한 특성이다.다른 언어에서는 두 가지 다른 비교로 표시하고 [] 조작을 사용해야 한다
>>> x = 15
>>> (10 < x) and (x < 20)
True

순환 중의 여러 출구점 구분
이것은 약간 표지 변수의 대체품 같다.순환에서 벗어날 수 있는 두 가지 방법이 있다. 1) 돌파할 때;아니면2)너는 없다.두 번째 경우and가 집행된다.
>>> def find(seq, target):
...     for i, value in enumerate(seq):
...         if value == target:
...             break
...     else:
...         return -1
...     return i
... 
>>> find([3,4,5], 5)
1
>>> find([3,4,5], 6)
-1
나는 다른 이름에 대한 잘못된 이름을 제외하고는 그것을 사용하지 않을 이유가 있다고 생각하지 않는다.나는 많은 코드 라이브러리에서 이런 용법을 보지 못했다. 아마도 목록처럼 이해하지 못하는 아주 작은 용례가 있기 때문일 것이다.

삼원 연산자
유니버설 문법 청사진
(if_test_is_false, if_test_is_true)[test]
예시 용법
a = ('Odd', 'Even')[num//2 == 0]
이것은 듣기에 매우 유용하다. 왜 이전에 들어보지 못했거나, 몇몇 코드 라이브러리에서 비슷한 것을 본 적이 있는지 알고 싶다.이 배후에는 원인이 하나 있으니, 이 예를 이해해야 한다.
>>> (print('isFalse'), print('isTrue'))[True]
isFalse
isTrue
보시다시피 그것은 두 가지 상황을 인쇄했다.따라서 추가 처리를 낭비했을 뿐만 아니라 오류도 도입할 수 있다.3원 if-else는 None 값 (또는python 세계의null 값이 아닌 것) 을 처리하는 데 사용할 수 없습니다.
>>> import re
>>> message = 'Is pythonic way the better way?'
>>> match = re.search(r'python', message)
>>> (match.group(), 'Not found')[match == None]
'python'
>>> match = re.search(r'python3', message)
>>> (match.group(), 'Not found')[match == None]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
우리가 이 잘못을 받은 것은 우리가검색이 실패했습니다. else block 되돌아왔습니다. 우리는 원래의 물건 None 을 호출했습니다.원조 3원 기술을 사용하여 먼저 원조를 구축한 다음에 색인을 찾았기 때문에methodcase와None가 모두 실행되었다.
그래서 그것을 조심해서 사용해야 한다. 왜냐하면 내가 보기에는ifelse를 대체할 수 없기 때문이다!

Python 3.8(PEP 572)에서 사용할 수 있는 Walrus 연산자
대입문과 표현식이 모두 유사한 문을 사용할 경우 Walrus 연산을 사용하여 대입문과 부울 표현식을 일치 및 대입할 수 있습니다.
>>> import re
>>> message = 'Is pythonic way the better way?'
>>> if(match := re.search(r'python', message)):
...     print(match.group())
... 
python
>>> if(match := re.search(r'python3', message)):
...     print(match.group()) # No output
...
괄호는 매우 중요하다. 괄호가 없으면, 문장이 아닌 부울 표현식의 결과를 지정하기 때문이다.
>>> my_list = [1,2,3,4,5]
>>> if (n := len(my_list)) > 3:
...     print(n)
...
5
>>> if n := len(my_list) > 3: # without parenthesis
... print(n)
...
True

약간의 좋은 책
  • 본고의 영감은 레이먼드 헤팅거(Raymond Hettinger)가 PyCon 미국에서 2013년에 한 강연에서 비롯되었다.
  • python의 구부러진 테두리 사례를 주의하세요. "Wat"라고 말할 수 있습니다.
  • 파이톤의 반직각적인 코드 세션과 잘 알려지지 않은 특성에 대해 설명하려는 흥미로운 항목이 있다read here

  • 감사합니다!
    나는 네가 이 문장에 대해 매우 견해가 있다고 생각하기를 바란다. 너의 친구와 공유해라. 너는 my blog에서 나의 다른 문장을 읽을 수 있다
    만약 내가 무엇을 빠뜨렸다면, 평론을 써 주십시오. 나는 나의 문장을 갱신할 것입니다.

    좋은 웹페이지 즐겨찾기