x = 421장: 파이썬 기초

장 구성
학습 목표
int,float,string,list,dict,tuple등과 같은 표준 Python 데이터 유형을 생성, 설명 및 구별합니다.- 숫자 값에 대해
+,-,*,**와 같은 산술 연산을 수행합니다. .lower(),.split()과 같은 기본 문자열 작업을 수행하여 문자열을 조작합니다.- 비교 연산자 연산(
==,!=,>등)과 부울 연산자(and,or,not)를 사용하여 불리언 값을 계산합니다. - 튜플, 목록, 문자열 및 사전에 값을 할당하고, 인덱스하고, 슬라이스하고, 부분 집합을 만듭니다.
if,elif,else를 사용하여 조건문을 작성합니다.- 들여쓰기 수준에 따라 코드 블록을 식별합니다.
list와 같은 가변(mutable) 객체와tuple과 같은 불변(immutable) 객체의 차이점을 설명하세요.
1. 소개
이 웹사이트에 제시된 자료는 Python에 대한 사전 지식이 없다고 가정합니다. 프로그래밍 개념이나 다른 프로그래밍 언어에 대한 경험이 도움이 되지만 자료를 이해하는 데 반드시 필요한 것은 아닙니다.
웹사이트는 다음과 같이 구성됩니다: 1. 챕터: 핵심 콘텐츠가 포함되어 있습니다. 여유 시간에 이 내용을 읽어보세요. 2. 연습 연습: 각 장을 보완하는 선택적인 연습 연습 세트가 있습니다(솔루션 포함). 추가 연습을 위해 이 내용을 시도해 보고 장의 개념을 확고히 하는 데 도움이 됩니다.
2. 기본 파이썬 데이터 타입
값은 숫자나 텍스트 등 컴퓨터 프로그램이 사용하는 데이터 조각입니다. 값에는 다양한 유형이 있습니다. 42는 정수이고 "Hello!"는 문자열입니다. 변수는 값을 참조하는 이름입니다. 수학과 통계에서는 일반적으로 \(x\) 및 \(y\)와 같은 변수 이름을 사용합니다. Python에서는 문자나 밑줄로 시작하는 모든 단어를 변수 이름으로 사용할 수 있습니다. 그러나 for, while, class, lambda 등과 같은 Python의 예약어가 아니어야 합니다. 이러한 단어는 덮어쓰고 싶지 않은 Python의 특수 기능을 인코딩하기 때문입니다!
변수를 일부 정보(단일 숫자, 벡터, 문자열 등)가 들어 있는 상자로 생각하면 도움이 될 수 있습니다. 변수에 값을 할당하려면 할당 연산자 ’=’를 사용합니다.

다음에서 수정된 이미지: medium.com
표준 내장 파이썬 데이터 타입에 대한 요약은 파이썬 3 문서를 참고하세요.
일반적인 내장 Python 데이터 유형
| 영어 이름 | 이름 입력 | 유형 카테고리 | 설명 | 예 |
|---|---|---|---|---|
| 정수 | 정수 |
숫자 유형 | 양수/음수 정수 | 42 |
| 부동 소수점 수 | 플로트 |
숫자 유형 | 십진수 형식의 실수 | 3.14159 |
| 부울 | 부울 |
불리언 값 | 참 또는 거짓 | ‘사실’ |
| 문자열 | str |
시퀀스 유형 | 텍스트 | `치즈버거를 먹을 수 있나요?'' | | 목록 |목록| 시퀀스 유형 | 개체 모음 - 변경 가능하고 순서가 지정됨 |[‘알리’, ‘신이’, ‘미리암’]| | 튜플 |튜플| 시퀀스 유형 | 개체 모음 - 불변 및 순서 |(‘목요일’, 2018년 6월 9일)| | 사전 |딕트| 매핑 유형 | 키-값 쌍 매핑 |{‘이름’:‘DSCI’, ‘코드’:511, ‘크레딧’:2}` |
| 없음 | ‘없음 유형’ | 널 객체 | 값이 없음을 나타냄 | ‘없음’ |
숫자 데이터 유형
세 가지 고유한 숫자 유형이 있습니다: 정수, 부동 소수점 숫자, 복소수(여기에서는 다루지 않음). Python에서 type()을 사용하여 객체의 유형을 확인할 수 있습니다. print()를 사용하여 객체의 값을 인쇄할 수 있습니다.
type(x)int
print(x)42
Jupyter/IPython(Python의 대화형 버전)에서는 셀의 마지막 줄이 자동으로 화면에 인쇄되므로 실제로 ’print()’를 명시적으로 호출할 필요가 없습니다.
x # Anything after the pound/hash symbol is a comment and will not be run42
pi = 3.14159
pi3.14159
type(pi)float
산술 연산자
다음은 Python의 일반적인 산술 연산에 대한 구문 표입니다.
| 운영자 | 설명 |
|---|---|
+ |
추가 |
- |
빼기 |
* |
곱셈 |
/ |
부문 |
** |
지수 |
// |
정수 나눗셈(내림 나눗셈) |
% |
모듈로 |
이러한 연산자를 숫자 유형에 적용하고 결과를 관찰해 보겠습니다.
1 + 2 + 3 + 4 + 5 # add15
2 * 3.14159 # multiply6.28318
2**10 # exponent1024
나누기는 예상과 다른 dtype을 생성할 수 있으며 int를 float로 변경합니다.
int_2 = 2
type(int_2)int
int_2 / int_2 # divison1.0
type(int_2 / int_2)float
그러나 // 구문을 사용하면 “정수 나누기”(일명 “바닥 나누기”)를 수행하고 int 데이터 유형을 유지할 수 있으며 항상 내림됩니다.
101 / 250.5
101 // 2 # "floor division" - always rounds down50
우리는 이것을 “정수 나누기” 또는 “바닥 나누기”라고 부릅니다. 나눗셈 결과에 대해 int를 호출하여 가장 가까운 정수로 내림하거나 결과를 “바닥”으로 만드는 것과 같기 때문입니다.
int(101 / 2)50
% “모듈로” 연산자는 나눗셈 후 나머지를 제공합니다.
100 % 2 # "100 mod 2", or the remainder when 100 is divided by 20
101 % 2 # "101 mod 2", or the remainder when 101 is divided by 21
100.5 % 20.5
없음
NoneType은 Python에서 자체 유형입니다. 여기에는 ’None’이라는 하나의 값만 있습니다. 즉, 값이 없는 객체를 나타냅니다. 우리는 그것을 나중 장에서 다시 보게 될 것입니다.
x = Noneprint(x)None
type(x)NoneType
문자열
텍스트는 ’문자열’이라는 데이터 유형으로 저장됩니다. 문자열은 일련의 문자로 생각할 수 있습니다.
실제로 이는 일련의 유니코드 코드 포인트입니다. 관심이 있으시면 유니코드에 대한 훌륭한 블로그 게시물을 참조하세요.
문자열은 다음 중 하나로 묶인 문자로 작성됩니다. - 작은따옴표(예: 'Hello') - 큰따옴표(예: "Goodbye")
두 가지 방법 사이에는 차이가 없지만 두 가지 방법을 모두 사용하는 것이 유용한 경우가 있습니다(자세한 내용은 아래 참조). 또한 함수 문서화에 일반적으로 사용되는 삼중 큰따옴표도 있습니다(자세한 내용은 이후 장에서 설명). 예를 들어 """이 함수는 두 개의 숫자를 더합니다""".
my_name = "Tomas Beuzen"my_name'Tomas Beuzen'
type(my_name)str
course = "DSCI 511"course'DSCI 511'
type(course)str
문자열에 따옴표나 아포스트로피가 포함되어 있으면 작은따옴표와 큰따옴표를 조합하여 문자열을 정의할 수 있습니다.
sentence = "It's a rainy day."sentence"It's a rainy day."
type(sentence)str
quote = 'Donald Knuth: "Premature optimization is the root of all evil."'quote'Donald Knuth: "Premature optimization is the root of all evil."'
부울
부울(bool) 유형에는 True와 False라는 두 가지 값이 있습니다.
the_truth = Truethe_truthTrue
type(the_truth)bool
lies = FalseliesFalse
type(lies)bool
비교 연산자
비교 연산자를 사용하여 객체를 비교할 수 있으며 부울 결과를 반환합니다.
| 운영자 | 설명 |
|---|---|
x == y |
’x’는 ’y’와 같나요? |
x != y |
’x’는 ’y’와 같지 않습니까? |
x > y |
’x’는 ’y’보다 큽니까? |
x >= y |
’x’는 ’y’보다 크거나 같나요? |
x < y |
’x’는 ’y’보다 작나요? |
x <= y |
’x’는 ’y’보다 작거나 같나요? |
x는 y |
x는 y와 같은 객체인가요? |
2 < 3True
"Deep learning" == "Solve all the world's problems"False
2 != "2"True
2 == 2True
2 == 2.0True
부울 연산자
또한 True 또는 False로 평가되는 소위 “부울 연산자”도 있습니다.
| 운영자 | 설명 |
|---|---|
x와 y |
’x’와 ’y’는 모두 참인가요? |
x 또는 y |
‘x’와 ’y’ 중 적어도 하나가 참인가요? |
| ‘x 아님’ | ’x’는 거짓인가요? |
True and TrueTrue
True and FalseFalse
True or FalseTrue
False or FalseFalse
("Python 2" != "Python 3") and (2 <= 3)True
TrueTrue
not TrueFalse
not not TrueTrue
Python에는 & 및 |와 같은 비트 연산자도 있습니다. 비트 연산자는 문자 그대로 두 정수의 비트를 비교합니다. 이는 이 과정의 범위를 벗어나지만 실제로 작동하는 모습을 보여주기 위해 아래에 코드 조각을 포함시켰습니다.
print(f"Bit representation of the number 5: {5:0b}")
print(f"Bit representation of the number 4: {4:0b}")
print(" ↓↓↓")
print(f" {5 & 4:0b}")
print(" ↓ ")
print(f" {5 & 4}")Bit representation of the number 5: 101
Bit representation of the number 4: 100
↓↓↓
100
↓
4
캐스팅
때로는 한 유형에서 다른 유형으로 값을 명시적으로 캐스트해야 하는 경우가 있습니다. str(), int(), float()와 같은 함수를 사용하여 이를 수행할 수 있습니다. Python은 변환을 시도하고, 변환할 수 없으면 오류를 발생시킵니다.
x = 5.0
type(x)float
x = int(5.0)
x5
type(x)int
x = str(5.0)
x'5.0'
type(x)str
str(5.0) == 5.0False
int(5.3)5
float("hello")--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-69-7124e8e12e61> in <module> ----> 1 float("hello") ValueError: could not convert string to float: 'hello'
3. 리스트와 튜플
리스트와 튜플을 사용하면 단일 객체에 여러 항목(“요소”)을 저장할 수 있습니다. 요소는 _정렬_되어 있습니다(이것이 무엇을 의미하는지 잠시 후에 살펴보겠습니다). 목록부터 시작하겠습니다. 목록은 대괄호 []로 정의됩니다.
my_list = [1, 2, "THREE", 4, 0.5]my_list[1, 2, 'THREE', 4, 0.5]
type(my_list)list
목록은 모든 데이터 유형을 담을 수 있습니다. 심지어 다른 목록도 담을 수 있습니다!
another_list = [1, "two", [3, 4, "five"], True, None, {"key": "value"}]
another_list[1, 'two', [3, 4, 'five'], True, None, {'key': 'value'}]
곱셈이나 제곱과 같은 계열에 대한 표준 연산을 수행할 수도 있습니다. NumPy는 또한 시리즈가 numpy 배열로 구축되었기 때문에 대부분의 함수에 대한 인수로 시리즈를 허용합니다(나중에 자세히 설명).
len(my_list)5
튜플은 목록과 유사해 보이지만 중요한 차이점이 있습니다(불변이지만 이에 대해서는 나중에 자세히 설명합니다). 괄호 ()로 정의됩니다.
today = (1, 2, "THREE", 4, 0.5)today(1, 2, 'THREE', 4, 0.5)
type(today)tuple
len(today)5
인덱싱 및 슬라이싱 시퀀스
대괄호 구문을 사용하여 목록, 튜플 또는 문자열 내부의 값에 액세스할 수 있습니다. Python은 0부터 시작하는 인덱싱을 사용합니다. 이는 목록의 첫 번째 요소가 위치 1이 아닌 위치 0에 있음을 의미합니다.
my_list[1, 2, 'THREE', 4, 0.5]
my_list[0]1
my_list[2]'THREE'
len(my_list)5
my_list[5]--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-84-075ca585e721> in <module> ----> 1 my_list[5] IndexError: list index out of range
목록의 끝에서부터 거꾸로 계산하려면 음수 인덱스를 사용할 수 있습니다.
my_list[1, 2, 'THREE', 4, 0.5]
my_list[-1]0.5
my_list[-2]4
콜론:을 사용하여 하위 시퀀스에 액세스할 수 있습니다. 이것을 “슬라이싱”이라고 합니다.
my_list[1:3][2, 'THREE']
위에서 슬라이스의 시작은 포함되고 끝은 제외된다는 점에 유의하세요. 따라서 my_list[1:3]은 요소 1과 2를 가져오지만 3은 가져오지 않습니다.
시리즈의 각 객체에는 서로 다른 dtype이 있음을 알 수 있습니다. 여기에는 비용이 듭니다. 아래 시리즈의 메모리 사용량을 비교해 보세요.
alphabet = "abcdefghijklmnopqrstuvwxyz"alphabet[0]'a'
alphabet[-1]'z'
alphabet[-3]'x'
alphabet[:5]'abcde'
alphabet[12:20]'mnopqrst'
목록 메소드
목록은 개체이며 해당 데이터와 상호 작용하는 메서드가 있습니다. 메소드는 함수와 유사하며 데이터에 대해 일부 작업을 수행하지만 객체 자체에 정의되고 마침표 ’.’를 사용하여 액세스된다는 점에서 함수와 다릅니다. 예를 들어 my_list.append(item)은 my_list라는 목록 끝에 항목을 추가합니다. 더 많은 목록 메서드에 대한 문서를 볼 수 있습니다.
primes = [2, 3, 5, 7, 11]
primes[2, 3, 5, 7, 11]
len(primes)5
primes.append(13)primes[2, 3, 5, 7, 11, 13]
세트
또 다른 내장 Python 데이터 유형은 고유한 항목의 순서가 지정되지 않은 목록을 저장하는 set입니다. 순서가 지정되지 않은 세트는 요소 위치나 삽입 순서를 기록하지 않으므로 인덱싱을 지원하지 않습니다.
s = {2, 3, 5, 11}
s{2, 3, 5, 11}
{1, 2, 3} == {3, 2, 1}True
[1, 2, 3] == [3, 2, 1]False
s.add(2) # does nothing
s{2, 3, 5, 11}
s[0]--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-109-c9c96910e542> in <module> ----> 1 s[0] TypeError: 'set' object is not subscriptable
위: 요소가 정렬되지 않아 색인을 생성할 수 없기 때문에 오류가 발생합니다.
변경 가능한 유형과 불변 유형
문자열과 튜플은 변경할 수 없는 유형이므로 수정할 수 없습니다. 목록은 변경 가능하며 다양한 항목에 새 값을 할당할 수 있습니다. 이것이 리스트와 튜플의 주요 차이점입니다.
names_list = ["Indiana", "Fang", "Linsey"]
names_list['Indiana', 'Fang', 'Linsey']
names_list[0] = "Cool guy"
names_list['Cool guy', 'Fang', 'Linsey']
names_tuple = ("Indiana", "Fang", "Linsey")
names_tuple('Indiana', 'Fang', 'Linsey')
names_tuple[0] = "Not cool guy"--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-113-bd6a1b77b220> in <module> ----> 1 names_tuple[0] = "Not cool guy" TypeError: 'tuple' object does not support item assignment
문자열도 마찬가지입니다. 일단 정의되면 문자열의 문자를 수정할 수 없습니다.
my_name = "Tom"my_name[-1] = "q"--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-115-9bfcf81dbcf0> in <module> ----> 1 my_name[-1] = "q" TypeError: 'str' object does not support item assignment
x = ([1, 2, 3], 5)x[1] = 7--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-117-415ce6bd0126> in <module> ----> 1 x[1] = 7 TypeError: 'tuple' object does not support item assignment
x([1, 2, 3], 5)
x[0][1] = 4x([1, 4, 3], 5)
4. 문자열 메서드
Python에는 다양하고 유용한 문자열 메서드가 있습니다.
all_caps = "HOW ARE YOU TODAY?"
all_caps'HOW ARE YOU TODAY?'
new_str = all_caps.lower()
new_str'how are you today?'
lower 메소드는 원래 문자열을 변경하지 않고 새 문자열을 반환한다는 점에 유의하세요.
all_caps'HOW ARE YOU TODAY?'
많은 문자열 메소드가 있습니다. 문서를 확인하세요.
all_caps.split()['HOW', 'ARE', 'YOU', 'TODAY?']
all_caps.count("O")3
문자열을 목록으로 명시적으로 캐스팅할 수 있습니다.
caps_list = list(all_caps)
caps_list['H',
'O',
'W',
' ',
'A',
'R',
'E',
' ',
'Y',
'O',
'U',
' ',
'T',
'O',
'D',
'A',
'Y',
'?']
"".join(caps_list)'HOW ARE YOU TODAY?'
"-".join(caps_list)'H-O-W- -A-R-E- -Y-O-U- -T-O-D-A-Y-?'
또한 여러 메서드를 함께 연결할 수도 있습니다(이에 대해서는 이후 장에서 NumPy 및 Pandas에 대해 자세히 설명합니다).
"".join(caps_list).lower().split(" ")['how', 'are', 'you', 'today?']
문자열 형식 지정
Python에는 “공백을 채우고” 형식을 적절하게 지정하여 문자열을 생성하는 방법이 있습니다. 이는 변수나 명령문이 포함된 명령문을 인쇄하려는 경우에 유용합니다. 이를 수행하는 방법에는 몇 가지가 있지만 저는 Python 3.6에 도입된 f-strings를 사용하고 권장합니다. 당신이 해야 할 일은 문자열 앞에 문자 “f”를 넣은 다음 중괄호 표기법 {}을 사용하여 변수를 포함할 수 있는 것입니다.
name = "Newborn Baby"
age = 4 / 12
day = 10
month = 6
year = 2020
template_new = f"Hello, my name is {name}. I am {age:.2f} years old. I was born {day}/{month:02}/{year}."
template_new'Hello, my name is Newborn Baby. I am 0.33 years old. I was born 10/06/2020.'
`{note} 메모에는 **no** 인수가 필요하지 않습니다. 위 코드에서 중괄호 안의 콜론 뒤의 표기법은 형식 지정을 위한 것입니다. 예를 들어:.2f`는 이 변수를 소수점 이하 2자리까지 인쇄한다는 의미입니다. 여기에서 형식 코드 옵션을 확인하세요. ````
5. 딕셔너리
사전은 키-값 쌍 간의 매핑이며 중괄호로 정의됩니다.
house = {
"bedrooms": 3,
"bathrooms": 2,
"city": "Vancouver",
"price": 2499999,
"date_sold": (1, 3, 2015),
}
condo = {
"bedrooms": 2,
"bathrooms": 1,
"city": "Burnaby",
"price": 699999,
"date_sold": (27, 8, 2011),
}대괄호를 사용하여 사전의 특정 필드에 액세스할 수 있습니다.
house["price"]2499999
condo["city"]'Burnaby'
사전을 편집할 수도 있습니다(변경 가능).
condo["price"] = 5 # price already in the dict
condo{'bedrooms': 2,
'bathrooms': 1,
'city': 'Burnaby',
'price': 5,
'date_sold': (27, 8, 2011)}
condo["flooring"] = "wood"condo{'bedrooms': 2,
'bathrooms': 1,
'city': 'Burnaby',
'price': 5,
'date_sold': (27, 8, 2011),
'flooring': 'wood'}
필드를 완전히 삭제할 수도 있습니다(저는 거의 사용하지 않지만).
del condo["city"]--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-138-c9f116276b74> in <module> ----> 1 del condo["city"] KeyError: 'city'
condo{'bedrooms': 2,
'bathrooms': 1,
'price': 5,
'date_sold': (27, 8, 2011),
'flooring': 'wood'}
그리고 필드를 쉽게 추가할 수 있습니다.
condo[5] = 443345condo{'bedrooms': 2,
'bathrooms': 1,
'price': 5,
'date_sold': (27, 8, 2011),
'flooring': 'wood',
5: 443345}
키는 불변 데이터 유형일 수 있으며 ’튜플’도 가능합니다!
condo[(1, 2, 3)] = 777
condo{'bedrooms': 2,
'bathrooms': 1,
'price': 5,
'date_sold': (27, 8, 2011),
'flooring': 'wood',
5: 443345,
(1, 2, 3): 777}
존재하지 않는 키에 액세스하려고 하면 오류가 발생합니다.
condo["not-here"]--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-143-ab081f66baa5> in <module> ----> 1 condo["not-here"] KeyError: 'not-here'
6. 공허하게
때로는 나중에 채워질 빈 개체를 만들고 싶을 수도 있습니다.
lst = list() # empty list
lst[]
lst = [] # empty list
lst[]
위의 두 가지 방법 사이에는 실질적인 차이가 없습니다. []가 분명히 약간 더 빠릅니다…
tup = tuple() # empty tuple
tup()
tup = () # empty tuple
tup()
dic = dict() # empty dict
dic{}
dic = {} # empty dict
dic{}
st = set() # empty set
stset()
7. 조건문
조건문을 사용하면 프로그램 상태에 따라 특정 코드 블록만 실행되는 프로그램을 작성할 수 있습니다. 몇 가지 예를 살펴보고 키워드, 구문 및 들여쓰기를 기록해 보겠습니다.
name = "Tom"
if name.lower() == "tom":
print("That's my name too!")
elif name.lower() == "santa":
print("That's a funny name.")
else:
print(f"Hello {name}! That's a cool name!")
print("Nice to meet you!")That's my name too!
Nice to meet you!
주목해야 할 주요 사항: - if, elif, else 키워드를 사용하세요. - 콜론:은 각 조건식을 끝냅니다. - 들여쓰기(4개의 빈 공간)는 코드 블록을 정의합니다. - ‘if’ 문에서 조건문이 ‘True’를 반환하는 첫 번째 블록이 실행되고 프로그램이 ’if’ 블록을 종료합니다. - if 문에는 반드시 elif나 else가 필요하지 않습니다. - elif를 사용하면 여러 조건을 확인할 수 있습니다. - else를 사용하면 다른 모든 조건이 False인 경우 기본 블록을 평가할 수 있습니다. - 전체 if 문의 끝은 첫 번째 if 키워드와 동일한 수준으로 들여쓰기가 반환되는 곳입니다.
If 문은 서로 중첩될 수도 있습니다.
name = "Super Tom"
if name.lower() == "tom":
print("That's my name too!")
elif name.lower() == "santa":
print("That's a funny name.")
else:
print(f"Hello {name}! That's a cool name.")
if name.lower().startswith("super"):
print("Do you really have superpowers?")
print("Nice to meet you!")Hello Super Tom! That's a cool name.
Do you really have superpowers?
Nice to meet you!
인라인 if/else
단순화를 위해 간단한 if 문을 “인라인”, 즉 한 줄로 작성할 수 있습니다.
words = ["the", "list", "of", "words"]
x = "long list" if len(words) > 10 else "short list"
x'short list'
if len(words) > 10:
x = "long list"
else:
x = "short list"x'short list'
진실 가치 테스트
Python에서는 if 및 while(다음 장) 문에 사용하기 위해 모든 객체의 “진실”을 테스트할 수 있습니다. - True 값: False 값을 갖는 bool 객체이거나 len() == 0을 갖지 않는 한 모든 객체는 True를 반환합니다. - False 값: None, False, 0, 빈 시퀀스 및 컬렉션: '', (), [], {}, set()
여기 문서에서 자세히 알아보세요.
x = 1
if x:
print("I'm truthy!")
else:
print("I'm falsey!")I'm truthy!
x = False
if x:
print("I'm truthy!")
else:
print("I'm falsey!")I'm falsey!
x = []
if x:
print("I'm truthy!")
else:
print("I'm falsey!")I'm falsey!
단락
Python은 “단락”이라는 개념을 지원합니다. 표현식의 진리값이 이미 결정된 경우 불리언 연산의 실행을 자동으로 중지합니다.
fake_variable # not defined--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-159-38b1451e4717> in <module> ----> 1 fake_variable # not defined NameError: name 'fake_variable' is not defined
True or fake_variableTrue
True and fake_variable--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-161-a7196cc665d5> in <module> ----> 1 True and fake_variable NameError: name 'fake_variable' is not defined
False and fake_variableFalse
| 표현식 | 결과 | 세부정보 |
|---|---|---|
| A 또는 B | A가 ’True’이면 A else B | A가 ’False’인 경우에만 B가 실행됩니다. |
| A 및 B | A가 ’False’이면 A else B | A가 ’True’인 경우에만 B가 실행됩니다. |