> 백엔드 개발 > 파이썬 튜토리얼 > 파이썬의 숨겨진 트릭은 무엇입니까?

파이썬의 숨겨진 트릭은 무엇입니까?

王林
풀어 주다: 2023-04-24 11:16:07
앞으로
850명이 탐색했습니다.

1. ... 객체

예, 제대로 읽으셨습니다. "..."입니다.

Python에서 ...는 Ellipsis라는 객체를 나타냅니다. 공식 설명에 따르면 일반적으로 빈 함수의 자리 표시자로 사용하거나 Numpy에서 슬라이싱 작업에 사용할 수 있는 특수 값입니다.

예:

def my_awesome_function():
...
로그인 후 복사

def my_awesome_function():
Ellipsis
로그인 후 복사

와 동일합니다. 물론 패스나 문자열을 자리 표시자로 사용할 수도 있습니다.

def my_awesome_function():
pass
로그인 후 복사
def my_awesome_function():
"An empty, but also awesome function"
로그인 후 복사

최종 효과는 동일합니다.

Numpy에서 객체가 어떻게 작동하는지 이야기해 보겠습니다. 3x3x3 행렬 배열을 만든 다음 가장 안쪽 행렬의 두 번째 열을 가져옵니다.

>>> import numpy as np
>>> array = np.arange(27).reshape(3, 3, 3)
>>> array
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
 [[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
 [[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
로그인 후 복사

가장 안쪽 행렬 열의 두 번째 열을 얻으려면 전통적인 방법을 사용하세요. 다음과 같이 보일 수 있습니다:

>>> array[:, :, 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
로그인 후 복사

... 객체를 사용하는 경우 다음과 같이 보일 것입니다:

>>> array[..., 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
로그인 후 복사

그러나 참고하세요... 객체는 Python 내장 배열이 아닌 Numpy에서만 사용할 수 있습니다.

2. 반복 개체 압축 풀기

반복 개체 압축 풀기는 매우 편리한 기능입니다:

>>> a, *b, c = range(1, 11)
>>> a
1
>>> c
10
>>> b
[2, 3, 4, 5, 6, 7, 8, 9]
로그인 후 복사

또는:

>>> a, b, c = range(3)
>>> a
0
>>> b
1
>>> c
2
로그인 후 복사

마찬가지로 다음과 같은 코드를 작성하는 대신:

>>> lst = [1]
>>> a = lst[0]
>>> a
1
>>> (a, ) = lst
>>> a
1
로그인 후 복사

같은 방식으로 업데이트하는 것이 좋습니다. 반복 객체의 압축을 풀면서 우아한 할당 작업:

>>> lst = [1]
>>> [a] = lst
>>> a
1
로그인 후 복사

좀 멍청해 보이지만 내 개인적인 의견으로는 이전 작성 방식보다 더 우아합니다.

3. 확장의 예술

다음과 같이 배열을 확장하는 여러 가지 이상한 방법이 있습니다.

>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> flattened = [elem for sublist in l for elem in sublist]
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]
로그인 후 복사

리듀스와 람다에 대해 어느 정도 이해하고 있다면 좀 더 우아한 방법을 사용하는 것이 좋습니다:

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
로그인 후 복사

combine 감소 및 람다, l 배열의 각 하위 배열에 대해 접합 작업을 수행할 수 있습니다.

물론, 더 마법 같은 방법도 있습니다:

>>> sum(l, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> # 其实相当于 [] + [1, 2, 3] + [4, 5, 6] + [7, 8, 9]
로그인 후 복사

예, 2차원 배열에 합계 연산을 수행하면 2차원 배열의 각 요소를 "덧셈"을 통해 함께 연결할 수 있습니다.

마찬가지로 3차원 배열에 합 연산을 하면 2차원 배열로 변환이 가능합니다. 이때 2차원 배열에 합 연산을 하면 가능합니다. 1차원 배열로 확장됩니다.

이 기술은 훌륭하지만 가독성이 너무 좋지 않기 때문에 권장하지 않습니다.

4. 밑줄 _ 변수

Python 인터프리터, IPython 또는 Django 콘솔에서 표현식을 실행할 때마다 Python은 출력 값을 _ 변수에 바인딩합니다.

>>> nums = [1, 3, 7]
>>> sum(nums)
11
>>> _
11
>>>
로그인 후 복사

변수이므로 다음에서 재정의할 수 있습니다.

>>> 9 + _
20
>>> a = _
>>> a
20
로그인 후 복사

5. else의 다양한 용도

많은 사람들은 else가 여러 곳에서 사용될 수 있다는 사실을 모릅니다. in 루프 예외 처리에 사용됩니다.

Loop

특정 논리가 루프에서 처리되는지 확인해야 하는 경우 일반적으로 다음을 수행합니다.

found = False
a = 0
while a < 10:
if a == 12:
found = True
a += 1
if not found:
print("a was never found")
로그인 후 복사

else가 도입되면 변수를 하나 덜 사용할 수 있습니다.

a = 0
while a < 10:
if a == 12:
break
a += 1
else:
print("a was never found")
로그인 후 복사
예외 처리

우리는 다음을 사용할 수 있습니다. try.. Except ... 예외가 포착되지 않았을 때 else를 사용하여 논리를 작성합니다:

In [13]: try:
...: {}[&#39;lala&#39;]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Key is missing
로그인 후 복사

이런 식으로 프로그램에 예외가 없으면 else 분기를 사용합니다:

In [14]: try:
...: {&#39;lala&#39;: &#39;bla&#39;}[&#39;lala&#39;]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Else here
로그인 후 복사

위 내용은 파이썬의 숨겨진 트릭은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿