찾다
백엔드 개발파이썬 튜토리얼Python에 왜 pass 문이 있는지 아시나요?

Python 동영상 튜토리얼 칼럼에서는 Python에 pass 문이 필요한 이유를 소개합니다.

Python에 왜 pass 문이 있는지 아시나요?

Python의 pass 문은 매우 간단해 보이며(단 4글자), 프로그래밍 경험이 없는 초보자도 사용법을 빠르게 익힐 수 있습니다. pass语句,它似乎很简单(只有 4 个字母),即使是没有任何编程经验的初学者也能很快地掌握它的用法。

官方文档 的介绍十分简单,下面的三个例子可以让我们快速地了解到如何使用它:

Python에 왜 pass 문이 있는지 아시나요?

简单而言,pass 是一种空操作(null operation),解释器执行到它的时候,除了检查语法是否合法,什么也不做就直接跳过。

它跟 return、break、continue 和 yield 之类的非空操作相比,最大的区别是它不会改变程序的执行顺序。它就像我们写的注释,除了占用一行代码行,不会对所处的作用域产生任何影响。

但是,如果你有其它语言的基础,你也许会好奇:为什么 Python 有这么独特的 pass 语句,而别的语言却没有?

Python 这么设计,到底是出于什么原因呢?

是为了解决大部分编程语言都要面对的共性问题,还是因为它有自己的新发现,所以创造出来一个新的特性?

换句话说:Python 为什么要有 pass 语句,它能解决什么问题(好处),如果没有它,会导致什么问题(坏处)?

接下来,本文将从两个维度展开分析。

1、对人:作为空间占位符

我把它看作是一种言简意赅的注释方式,等于是说“这里先预留位置,回头再补上具体的代码实现”。

比如在多层的 if-elif-else 结构中,我们可以先把判断条件写好,然后在对应的块中写上 pass,以后再慢慢完善。

比如上文中给出的例子,我们可以先写好类/函数名及其入参,然后跳过(pass)主体代码,以后再慢慢填充。

pass 写起来简单,而且由于是关键字,IDE 会给出显眼的颜色区分,所以就比我们写上注释内容来得方便些。

pass 作为空间占位符,主要可以方便我们构思局部的代码结构,有一定的辅助提醒作用。

但是,若作为一种注释方式,它就显得太单薄了,比不上写“# todo: xxxx”,后者也会被 IDE 用颜色突显,而且意思更明确。虽然写起来简单,但它也引入了一个看似多余的关键字 pass。

所以,从空间占位符的角度来看,pass 不是编程语言中必须的设计要素。

有了它,我们可以表达出“此处有东西,但暂时跳过”的语义,但如果没有它,则可以用注释内容来替代。

2、对机器:为了语法完整性

对于前一条的用法,pass 出现在代码中的位置在理论上是不受限的。

但是,我们最常使用 pass 时,基本是在冒号的下一行,而且在该层缩进的代码块中,只有这一条语句。(参见前文的 3 个例子,为了方便,我们仅以以空函数为例)

我们可以设想下,如果不写它,会怎样?

答案是会报缩进错误:IndentationError: expected an indented block

# 将函数体的 pass 去除,会报错def func():func()复制代码

因为 Python 使用缩进来划分代码块(至于原因,请查阅《Python为什么使用缩进来划分代码块?》),而冒号标识着要出现新的缩进代码块,所以这个例子会报缺少缩进代码块。

如果我们用前文说的注释来替代,看看会怎样?

# 将函数体的 pass 换成注释def func():
    # todo:此处有东西,以后补上func()复制代码

这样写,也会报错:IndentationError: expected an indented block

原因是注释并非有效的语法内容,它会被 Python 解释器忽略掉(ignore),不像 pass 语句那样是“有效的语法内容,但是跳过”。

也就是说,缩进代码块中必须包含有语法意义的内容,下面的例子都是有效的:

def func():
    """这是一个字符串"""def func2():
    123456复制代码

Python 在定义函数时,必须包含函数体,即同时包含声明加定义两种语义,不能像某些语言可以只使用声明的语义,即写成void test();

但是,由于 Python 不使用花括号,它无法像某些语言那样直接定义出空函数,即写成void test(){}

공식 문서의 소개는 매우 간단합니다. 다음 세 가지 예를 통해 사용 방법을 빠르게 이해할 수 있습니다.

Python에 왜 pass 문이 있는지 아시나요?

간단히 말하면 패스는 null 연산입니다. 인터프리터가 이를 실행할 때 구문이 적합한지 확인하고 건너뛰는 것 외에는 아무 작업도 수행하지 않습니다. 🎜🎜Return, Break, Continue, Yield 등 비어 있지 않은 연산과 비교할 때 가장 큰 차이점은 프로그램의 실행 순서를 변경하지 않는다는 것입니다. 이는 코드 한 줄을 차지하고 그것이 위치한 범위에 아무런 영향을 미치지 않는다는 점을 제외하면 우리가 작성하는 주석과 같습니다. 🎜🎜그러나 다른 언어에 대한 기초가 있다면 다음과 같은 궁금증이 생길 수 있습니다. 파이썬에는 왜 이렇게 독특한 pass 문이 있는데 다른 언어에는 없는 걸까요? 🎜🎜파이썬은 왜 이런 식으로 설계되었나요? 🎜🎜대부분의 프로그래밍 언어가 직면한 일반적인 문제를 해결하기 위한 것입니까, 아니면 자체적인 새로운 발견으로 인해 만들어진 새로운 기능입니까? 🎜🎜즉, 파이썬에 pass 문이 있는 이유는 무엇이며, 이것이 해결하는 문제는 무엇이며(이점), 그것이 없으면 어떤 문제가 발생합니까(단점)? 🎜🎜다음으로 이 글은 두 가지 차원에서 분석해보겠습니다. 🎜

1. 사람들의 경우: 공간 자리 표시자로서🎜🎜간결하고 포괄적인 댓글 작성 방법으로 간주합니다. 이는 "이라고 말하는 것과 같습니다. 먼저 여기에서 장소를 예약한 다음 나중에 특정 코드 구현을 추가하세요." 🎜🎜예를 들어 다층 if-elif-else 구조에서는 판단 조건을 먼저 작성한 다음 해당 블록에 pass를 쓴 다음 나중에 천천히 개선할 수 있습니다. 🎜🎜예를 들어 위에 주어진 예에서는 먼저 클래스/함수 이름과 해당 입력 매개변수를 작성한 다음 메인 코드를 건너뛰고(통과) 나중에 천천히 채울 수 있습니다. 🎜🎜pass는 작성하기 쉽고, 키워드이기 때문에 IDE에서 색상 구별이 눈에 띄게 해주기 때문에 댓글 작성보다 편리합니다. 🎜🎜pass 공백 자리 표시자로서 주로 지역 코드 구조를 이해하는 데 도움이 되며 특정 보조 알림 효과가 있습니다. 🎜🎜하지만 댓글 방식으로는 "# todo:xxxx"라고 쓰는 것보다 너무 얇아서 열등합니다. 후자도 IDE에서 색상으로 강조 표시되어 더 명확한 의미를 갖습니다. 작성하기는 간단하지만 중복되는 것처럼 보이는 키워드 패스도 도입합니다. 🎜🎜따라서 공간 자리 표시자 관점에서 보면 pass는 프로그래밍 언어에서 필수적인 디자인 요소가 아닙니다. 🎜🎜그것을 사용하면 "여기에 뭔가가 있지만 지금은 건너뛴다"라는 의미를 표현할 수 있지만, 그것이 없으면 주석 콘텐츠로 대체될 수 있습니다. 🎜

2. 기계의 경우: 문법적 완성도를 위해🎜🎜이전 항목의 사용법에 있어서 코드에서 pass가 나타나는 위치는 이론적으로 무제한. 🎜🎜그러나 pass를 가장 자주 사용할 때는 기본적으로 콜론 옆 줄에 있고, 이 수준에서 들여쓰기된 코드 블록에는 이 명령문 하나만 있습니다. (앞의 3가지 예시를 참고하세요. 편의상 빈 함수만 예로 들어보겠습니다.) 🎜🎜만약 작성하지 않으면 어떻게 될지 상상이 가시나요? 🎜🎜답은 들여쓰기 오류가 보고된다는 것입니다: IndentationError:expected an indented block🎜rrreee🎜Python은 들여쓰기를 사용하여 코드 블록을 나누기 때문입니다(이유는 "Python은 왜 들여쓰기를 사용하여 코드 블록을 나누시겠습니까?" 》), 콜론은 들여쓰기된 새 코드 블록의 모양을 표시하므로 이 예에서는 들여쓰기된 코드 블록이 누락되었음을 보고합니다. 🎜🎜위에서 언급한 주석으로 대체하면 어떻게 되나요? 🎜rrreee🎜이와 ​​같이 작성하면 오류도 보고됩니다: IndentationError:expected an indented block🎜🎜이유는 주석이 유효한 문법 내용이 아니기 때문입니다. Python 인터프리터에서 무시됩니다(무시 ), pass 문과 달리 이는 "유효한 구문 내용이지만 건너뛰었습니다"입니다. 🎜🎜즉, 들여쓰기된 코드 블록에는 문법적으로 의미 있는 내용이 포함되어야 합니다. 다음 예는 모두 유효합니다. 🎜rrreee🎜Python 함수를 정의할 때 함수 본문을 포함해야 합니다. 즉, 선언 및 정의 의미를 모두 포함합니다. 선언된 의미 체계만 사용할 수 있는 일부 언어, 즉 void test();로 작성된 언어와는 다릅니다. 🎜🎜그러나 Python은 중괄호를 사용하지 않기 때문에 일부 언어처럼 void test(){}로 작성되는 빈 함수를 직접 정의할 수 없습니다. 🎜🎜위 분석에 따르면 Python은 빈 함수를 정의할 때 적법한 함수 본문이 있어야 하므로 pass 문은 no-op를 나타내도록 설계되었습니다. 이는 구문을 완성하기 위한 것이며 콜론과 함께 다른 언어의 빈 중괄호 쌍과 동일합니다. 🎜

문법적 무결성의 관점에서 볼 때 필요한 디자인 요소입니다. 사용할 수 없는 경우 유사한 빈 문장이나 특수 기호로 대체해야 합니다.

사람들에게 pass는 임시 자리 표시자로서 "일시적으로 건너뛰기"를 의미할 수 있으며 이는 결국 기계의 실제 코드 구현으로 대체될 수 있으며 구문 논리가 완료되었지만 그렇지 않은 경우에는 "직접 건너뛰기"를 의미할 수 있습니다. 다른 코드로 대체됩니다.

다른 언어들은 이런 자리 표시자를 표현하기 위한 특별한 문장이나 기호가 없지만(즉, 의미론이 부족함), 문법적 무결성을 완성하기 위해 굳이 키워드를 디자인할 필요가 없습니다(즉, 문법이 완성되었습니다).

이 글의 시작 부분에 있는 질문으로 돌아가서: Python에는 왜 pass 문이 있고, 어떤 문제가 해결되며(이점), Pass 문이 없으면 어떤 문제가 발생합니까(단점)?

Python은 pass 문을 사용하여 순수하게 연산이 없는 코드 블록(빈 함수, 빈 클래스, 빈 루프 제어 블록 등)을 지원하며 이를 통해 추가 자리 표시자 의미 체계를 표현할 수도 있습니다.

전자는 기계용이므로 반드시 있어야 하며, 후자는 인간용이므로 필요하지 않고 주석으로 표현할 수 있지만 Python은 이 명령문과 이 사용법은 때로는 매우 편리합니다.

관련 무료 학습 권장사항: python 비디오 튜토리얼

위 내용은 Python에 왜 pass 문이 있는지 아시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 juejin에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
파이썬 : 자동화, 스크립팅 및 작업 관리파이썬 : 자동화, 스크립팅 및 작업 관리Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

파이썬과 시간 : 공부 시간을 최대한 활용파이썬과 시간 : 공부 시간을 최대한 활용Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구