목차
1. ... 객체
2. 반복 개체 압축 풀기
3. 확장의 예술
4. 밑줄 _ 변수
5. else의 다양한 용도
Loop
예외 처리
백엔드 개발 파이썬 튜토리얼 파이썬의 숨겨진 트릭은 무엇입니까?

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

Apr 24, 2023 am 11:16 AM
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.. Except ... 예외가 포착되지 않았을 때 else를 사용하여 논리를 작성합니다:

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
로그인 후 복사

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

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek Xiaomi를 다운로드하는 방법 DeepSeek Xiaomi를 다운로드하는 방법 Feb 19, 2025 pm 05:27 PM

DeepSeek Xiaomi를 다운로드하는 방법

템플릿의 장점과 단점은 무엇입니까? 템플릿의 장점과 단점은 무엇입니까? May 08, 2024 pm 03:51 PM

템플릿의 장점과 단점은 무엇입니까?

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Jul 01, 2024 am 07:22 AM

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. 단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. May 06, 2024 pm 03:52 PM

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다.

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 May 06, 2024 pm 04:43 PM

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유

golang 함수 디버깅 및 분석에 대한 완벽한 가이드 golang 함수 디버깅 및 분석에 대한 완벽한 가이드 May 06, 2024 pm 02:00 PM

golang 함수 디버깅 및 분석에 대한 완벽한 가이드

당신은 그에게 Deepseek에게 어떻게 물어 봐요 당신은 그에게 Deepseek에게 어떻게 물어 봐요 Feb 19, 2025 pm 04:42 PM

당신은 그에게 Deepseek에게 어떻게 물어 봐요

평가 기능을 저장하는 방법 평가 기능을 저장하는 방법 May 07, 2024 am 01:09 AM

평가 기능을 저장하는 방법

See all articles