Python 기본 및 심화문법

CheolSoonKang·2024년 2월 20일

개념정리

목록 보기
10/18

기본문법

이전 포스트에서 파이썬의 기본적인 문법을 정리하였다.
https://velog.io/@kcs4752/AI-3%EC%A3%BC%EC%B0%A8Python%EA%B3%BC-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95
(자료형 , 조건문 , 반복문)

심화문법

함수

#기본형
def hello():
	print("안녕!")
    print("또 만나요!")
    
hello() ###안녕!
        ###또 만나요!

#with parameter
def bus_rate(age):
	if age > 65:
		print("무료로 이용하세요")
	elif age > 20:
		print("성인입니다.")
	else:
		print("청소년입니다")

bus_rate(27) # 성인입니다.

#with return
def bus_fee(age):
	if age > 65:
		return 0
	elif age > 20:
		return 1200
	else:
		return 0     

money = bus_fee(28)
print(money)       #1200

튜플(tuple)과 집합(set)

튜플

리스트와 비슷하지만, 수정 및 추가 불가인 자료형

a = (1,2,3)

print(a[0])

집합(set)

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set)# [1,2,3,4,5]

fString

name = 'Cheolsoon'
score = '92'
print(f'{name}{score}점입니다') #Cheolsoon은 92점입니다

예외처리 try ~ except문

for person in people:
    try:
        if person['age'] > 20: # people데이터중 일부의 age데이터가 누락되었다.
            print (person['name'])
    except:
        name = person['name']
        print(f'{name} - 에러입니다')

오류가 생길 시 예외처리를 하고 정상실행됩니다.

모듈 가져오기(패키지 만들기 기본형)

#main_test.py
from main_func import *

say_hi()
#main_func.py
def say_hi():
	print('안녕!')

main_test.py에서 main_func.py의 say_hi() 함수를 불러들여 사용하였다.

2-6. 한줄의 마법(삼항연산)

#if문
if num%2 == 0
	result = "짝수"
else
	result = "홀수"
#위의 4줄의 코드는 아래의 1줄로 바꿀 수 있다.
result = "짝수" if num%2 == 0 else "홀수
#(결과1) if (조건) else (결과2)으로도 사용가능하다.
#for문
a_list  = [1, 3, 2, 5, 1, 2]
#
b_list = []
for a in a_list:
    b_list.append(a*2)
#위의 3줄의 코드는 아래의 1줄로 바꿀 수 있다.
b_list = [a*2 for a in a_list]
#(반복할 코드) for (element) in (반복할 elements)

map,filter,lambda

map

def check_adult(person):
    if person['age'] > 20:
        return '성인'
    else:
        return '청소년'
result = map(check_adult, people)
print(list(result))

리스트나 딕셔너리에 대해 모든 항목에 대해 수행할 함수를 실행한 것을 반환한다.
물론 아래와 같이 삼항연산도 가능하다.

def check_adult(person):
    return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))

lambda

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

위의 for문을 함수를 따로 선언하지 않고 작성가능하다.
Javascript의 inline function과 비슷한 기능을 수행한다고 볼 수 있을 것 같다.

filter

result = filter(lambda x: x['age'] > 20, people)
print(list(result))

리스트나 딕셔너리에 대해 특정 조건을 만족하는 요소만 반환한다.

함수의 매개변수(function parameter)

기본형

def cal(a, b):
    return a + 2 * b
print(cal(3, 5))
print(cal(a=3, b=5))
#매개변수의 값을 지정해줄 수 있다.(순서에 상관X)

초기값 지정

def cal2(a, b=3):
    return a + 2 * b
print(cal2(4)) # 10
print(cal2(4, 2)) # 8
# 초기값을 지정해 줄 수 있다.

여러 개의 매개변수

def call_names(*args):
    for name in args:
        print(f'{name}야 밥먹어라~')

call_names('철수','영수','희재')

매개변수의 인수를 여러 개 받기

def get_kwargs(**kwargs):
    print(kwargs)
    
get_kwargs(name='bob')
get_kwargs(name='john', age='27')

클래스

쉽게 말해 인스턴스(객체를) 만들어내는 '틀'로 설계도, 도장과 비슷한다.
즉, 동일한 무언가를 계속해서 만들어낼 수 있는 형태이며 만들어낸 객체들은 모두 고유한 성격을 가진다. 단, 객체별로 갖는 기능은 모두 동일하다.

class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()

다음 포스트에서 조금 더 심화?된 문법을 정리해보겠다.

profile
소통하며 성장하는 늦깎이 개발자

0개의 댓글