Python/Basics

몰라도 괜찮지만 알아도 괜찮은 몇가지 문법/표현[0]

Juhyuck 2023. 4. 9. 10:06
728x90

파이썬을 쓰다보면 영어 문장 읽듯 그냥 편하게 쓸 수 있다는 점이 참 좋다.

그런데 가끔은 그렇게 일일이 말하듯 쓰기 보다는 간결하게 쓰고 싶은 생각이 드는데,

그럴 때 사용하면 좋을 몇가지 문법/표현을 소개한다.

1. Conditional Expression (조건 표현, 삼항 연산자)

자바스크립트에서 삼항 연산자는 아래와 같이 심플하게 구현된다.

let age = 19
let status = age >= 18 ? "Adult" : "Minor"

파이썬에서는 아래와 같이 가능한데, JS보다는 문장으로 읽힌다.

age = 19
status = "Adult" if age >= 18 else "Minor"

읽어보면, status는 Adult이다. 만약 age가 18보다 크거나 같다면. 아니라면 Minor고.

2. Walrus Operator (Assignment Expression, 대입 표현식, 바다코끼리 연산자)

https://www.procoding.org/walrus-operator-in-python/

python 3.8이상부터 사용할 수 있는데. 이름부터 귀엽다. 작명센스가 👍

표현식을 변수화 한다고 정리할 수 있을까?

조건문이나 반복문을 시작하기 전에 변수를 만들어주는 것을 간소화 할 수 있다.

 

이렇게 짜던 것을

number = 1
while number:
    # do something with command
    number = int(input("Enter command (0 to quit): "))

이렇게 바꿀 수 있다.

while (number := int(input("Enter command (0 to quit): "))) != 0:
    # do something with command

다양한 예시와 자세한 설명은 여기서 자세히 볼 수 있다.

3. all(), any()

all과 any는 알면 유용하게 쓸 수 있는 python built-in 함수이다.

 

all은 iterable한 객체를 인자로 받아서, 모든 요소가 True일 때 True를 반환한다. 즉, 하나라도 False이면 False를 반환.

여기서 iterable한 객체를 인자로 받는다는 점에서 표현식(expression)을 반복할 수 있어도 가능하다.

예를 들어, 어떤 리스트가 모두 짝수인지를 확인하고 싶다면,

nums = [2,4,6,8,10]
all(num % 2 == 0 for num in nums) # True를 반환

그대로 읽어보면, "모든 num을 2로 나눈 나머지가 0이 맞니? num은 nums에 있는 것들이고. " 정도로 읽으면 된다.

 

any는 하나라도 True면 True를 반환한다. all도 그렇지만, any도 단어 뜻 그대로 사용된다.

nums = [1,3,5,6,7,9]
any(num % 2 == 0 for num in nums) # True를 반환

any도 읽어보면, "하나라도 num을 2로 나눈 나머지가 0이 맞니? num은 nums에 있는 것들이고." 정도.