구렁이법이 더 좋은 방법인가요?
15321 단어 pythontechnologyprogrammingcode
아직 모르실 수도 있습니다. 파이톤은 해석적이고 상호작용적이며 대상을 대상으로 하는 프로그래밍 언어입니다.그러나 더 중요한 것은 파이톤은 프로그래밍 언어로 더 빨리 일을 하고 시스템을 더욱 효과적으로 통합시킬 수 있다.
추천하는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원 기술을 사용하여 먼저 원조를 구축한 다음에 색인을 찾았기 때문에method
case와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
약간의 좋은 책
감사합니다!
나는 네가 이 문장에 대해 매우 견해가 있다고 생각하기를 바란다. 너의 친구와 공유해라. 너는 my blog에서 나의 다른 문장을 읽을 수 있다
만약 내가 무엇을 빠뜨렸다면, 평론을 써 주십시오. 나는 나의 문장을 갱신할 것입니다.
Reference
이 문제에 관하여(구렁이법이 더 좋은 방법인가요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/itsnikhil/is-pythonic-way-the-better-way-2hph텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)