에듀테크 프로젝트 대시보드
불리언 · None · 비교
if 는 truthy/falsy 로 판단하고, and/or 는 피연산자를 그대로 반환합니다.
True == 1 # => True
False == 0 # => True
True + True # => 2
sum([True, False, True]) # => 2 (조건 개수 세기 관용구)
isinstance(True, int) # => TrueFalse, None0, 0.0, 0j"", [], (), {}, set()len() 이 0을 반환하는 객체items = []
if not items:
print("비어 있음") # 이 방식 권장 (len(items) == 0 대신)
name = ""
print(name or "익명") # => '익명' (기본값 관용구)# and: 첫 falsy 를, 없으면 마지막 값을 반환
1 and 2 # => 2
0 and 2 # => 0
"" and foo() # foo() 는 호출조차 안 됨
# or: 첫 truthy 를, 없으면 마지막 값을 반환
None or [] or "fallback" # => 'fallback'
# 조건부 값
status = "on" if enabled else "off"a = [1, 2, 3]
b = [1, 2, 3]
a == b # => True (값이 같은가)
a is b # => False (같은 객체인가)
x = None
x is None # => True (None 비교는 항상 is)None, True, False 비교에만 is 사용is 가 우연히 True — 신뢰 금지==age = 20
18 <= age < 65 # => True (18 <= age and age < 65)
# 정렬 가능 여부: 같은 타입끼리만
# 1 < "2" # TypeError (3.x)
(1, 2) < (1, 3) # => True (튜플은 사전식 비교)def find(seq, target):
for i, v in enumerate(seq):
if v == target:
return i
return None # "못 찾음"
idx = find([1, 2], 9)
if idx is not None:
...
# 가변 기본인자 회피 패턴
def add(item, bucket=None):
if bucket is None:
bucket = []
bucket.append(item)
return bucket