>  기사  >  백엔드 개발  >  당신이 한 번도 들어본 적 없는 Python의 5가지 숨겨진 트릭

당신이 한 번도 들어본 적 없는 Python의 5가지 숨겨진 트릭

PHPz
PHPz앞으로
2023-04-13 14:31:031588검색

당신이 한 번도 들어본 적 없는 Python의 5가지 숨겨진 트릭

인생은 짧습니다. Python을 빨리 배우세요

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.. 예외가 포착되지 않은 경우 else in Except ...를 사용하여 논리를 작성합니다.

In [13]: try:
...: {}['lala']
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Key is missing

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

In [14]: try:
...: {'lala': 'bla'}['lala']
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Else here

자주 예외 처리를 수행하는 경우 , 당신은 이 트릭을 아주 편리하게 알게 될 것입니다.

위 내용은 당신이 한 번도 들어본 적 없는 Python의 5가지 숨겨진 트릭의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제