11. Ternary conditional operator, underscore, context manager, with
11.1 ternary conditional operator (삼항 연산자)
삼항 연산자가 뭔지 몰라서
단항 연산자, 이항 연산자를 먼저 공부해봤다.
우선 이것들은 연산 대상의 개수에 따라 연산자를 분류한 것이다.
단항 연산자
not, +, - 는 단항 연산자이다. 여기서 +와 -는 더하기나 빼기가 아니라 양수, 음수를 구분할 때 쓰이는 부호를 의미한다. 연산자에 항이 하나만 필요한 경우!
이항 연산자
+, -, *, / , .. 대부분의 우리가 알고 있는 연산자들은 이항 연산자이다. 연산자를 사이에 두고 항이 2개 필요하다는 뜻이다.
삼항 연산자
if else 문이 삼항 연산자이다.
읽고, 이해하기 쉬우며 줄의 수를 줄일 수 있기 때문에 사용한다.
삼항 연산자를 이해하기 위해 다음의 코드를 살펴보자.
삼항 연산자를 사용하지 않고 코드를 작성하면
condition = False
if condition:
x = 1
else:
x = 0
print(x)
으로 적을 수 있다. 이해는 쉽지만 꽤 긴 분량을 차지한다.
삼항 연산자를 사용하여 코드를 작성하면
condition = False
x = 1 if condition else 0
print(x)
으로 줄을 확 줄일 수 있다.
if 와 else 를 사이에 두고 연산에 이용되는 항이 3개임을 알 수 있다!
11.2 Underscore in Numeric Literals (숫자 리터럴에 밑줄 표시)
파이썬에서 밑줄은 영향을 주지 않고, 밑줄이 있으면 큰 숫자를 읽기 쉬워지기 때문에 사용한다.
n = 10_000_000_000
m = 100_000_000
total = n + m
print(f'{total:,}) # 10,100,000,000
print(f'{total:_}) # 10_100_000_000
print(total) # 10100000000
print(format(total,",") # 10,100,000,000
: 뒤에 있는 부호로 끊어준다.
(혹시나 해서 해봤는데 / 혹은 . 를 넣으면 온점이 나오고 공백으로 두면 아무것도 없이 10100000000 이 나온다.)
11.3 context manager, with
리소스를 다룰 때 사용한다.
f = open('test.txt','r') # with open('test.txt','r') as f: 와 같다
contents = f.read()
f.close()
words = contents.split(' ')
count = len(words)
print(count)