Python_모르는 것 투성이,,~

김채윤·2025년 10월 21일

파이썬 문법 뽀개기를 전부 수강했지만 SQL과 달리 너무 어려워서 기초부터 다시 공부하기로 했다. 그중 내가 모르던 것들이나 오개념을 정리해보자



1. 여기서 그냥 people에 age > 20으로 조건 걸어서 출력하면 되지 않나 싶었다.

찾아보니, 여러 사람의 이름과 나이가 저장된 데이터는 list이고 여기서는 그걸 people로 명명.

list에 저장된 각각의 데이터를 dictionary라고 하는데 그걸 코드로 명명해줘야 한다. 여기서는 person으로 명명.

각각의 데이터(person)의 age가 20 초과라면 person의 name을 출력해줘라는 코드

  1. 파이썬에서 쓰는 =과 ==의 차이

=는 대입(assignment)으로, 변수에 값을 지정할 때 사용

==는 비교(comparison)으로, 해당 값이 참인지 거짓인지를 구별할 때 사용

  1. print와 return의 차이


    print는 조건에 따라 지정된 것들을 화면에 보여주는(display) 것이다.
    하지만 return은 계산된 값을 해당 함수 밖으로 넘겨서 다른 함수에서 그 값을 사용할 수 있다.
def bus_fee(age):
    if age >= 65:
        return 0
    elif age >= 20:
        return 1200
    else:
        return 0

ages = [28, 17, 70]
total = sum(bus_fee(a) for a in ages)  # 반환값(숫자)이라 합계 계산 OK
print(total)

다음과 같이 return으로 나이에 따라 버스 요금이 출력되게 하고, 아래 또 다른 함수로 나이를 여러 개 넣어 버스 요금을 종합하게 했을 때, 위의 함수 return에서 출력된 요금이 아래 함수에서도 쓰여서 계산되는 것이다.

  1. def와 map
people = [
    {'name': 'bob',   'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john',  'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben',   'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red',   'age': 32},
    {'name': 'queen', 'age': 25},
]

def check_adult(person):
    if person['age'] >= 20:
       return '성인'
    else:
       return '청소년'

result = map(check_adult, people)
print(list(result))

for은 dictionary를 정의하는 것이지만, def는 함수를 정의하는 것이다.

함수 이름을 check_adult로 정의하고 뒤에 dictionary를 정의한다.

여기서 dictionary는 for dic in list와 같은 형태로 정의할 필요 없고 그냥 함수를 정의하면서 같이 정의한다.

map은 전부 출력해주는 함수인데 해석해보면 people의 각각의 dic를 check_adult 함수에 적용시켜달라는 함수이다.

함수에 적용되어 출력된 각각의 데이터를 list(result)로 하나의 list를 만들어 print된 것

result = map(lambda x: ('성인' if x['age']  20 else '청소년'), people)
 print(list(result))

코드를 다음과 같이 표현할 수도 있다.

lambda는 함수를 간단하게 만들어주는 것으로 lambda 매개변수: 표현식으로 나타낸다.

(lambda x,y: x + y)(10, 20)

이런식으로 함수의 이름을 지어줄 필요도 없다.

0개의 댓글