프로그래밍/python

11. Ternary conditional operator, underscore, context manager, with

서몰알 2021. 12. 30. 22:59

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)