[내일배움캠프] 파이썬 문법 기초(8) - 함수 심화, 클래스

재명·2021년 12월 16일
0

Python

목록 보기
8/8
post-thumbnail

1-17 함수 심화

1) 함수에 대한 변수를 순서 상관없이 직접 지정해 주는 것이 가능하다

def cal(a,b):
    return a+(2*b)
    
result = cal(b=2,a=3)
print(result)

>>> 7

2) 함수 선언 시 일부 인자들에 대해서만 default값을 설정해 주고 사용해도 무방하다

def cal(a,b=2):
    return a+(2*b)
    
result = cal(1)
print(result)

>>> 5

#위와같은 경우는 result 변수에 함수 실행결과를 담는 과정에서 1이 자동으로 가변인자인 a에 할당된다

3) *args를 사용하면 함수내에서 모든 변수를 직접 선언하지 않더라도 같은 형식의 가변인자를 갯수 상관없이 자동으로 할당받아 처리한다

def cal(*args):
    for name in args:
        print(f'{name} 밥먹어라~')
    
cal('영수','철수','영희')

>>>
영수 밥먹어라~
철수 밥먹어라~
영희 밥먹어라~

#TMI: args는 변수명을 임의로 정한 것일 뿐 *만 잘 써주면 뒤에는 어떤 변수명을 집어넣어도 상관없으며, 담아낸 자료값들은 튜플 형태로 반환된다

4) **kwargs는 *args와 비슷하지만 각 인자들에 대한 파라미터를 포함하여 딕셔너리 형태로 만들어준다

def cal(**kwargs):
    print(kwargs)
    
cal(name='bob',age=30,height=180)

>>> {'name':'bob', 'age':30, 'height':180}

#TMI: **kwargs(keyworld arguments)역시 **만 잘써주면 변수명은 어떻게 써도 상관없다 :) **merong 이렇게 해도 가-능

1-18 클래스

# 상황에 따라 다를 수 있지만, 모든 데이터를 중앙에서 관리하는 것 보다는 객체별로 각각의 데이터를 처리하는 것이 훨씬 효율적이고 유용함

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('죽었다!')
            
m1 = Monster()
m1.damage(150)
m1.status_check()

m2 = Monster()
m2.damage(90)
m2.status_check()

>>>
죽었다!
살았다

# class Monster처럼 관리 방식을 정의해 두고 하단의 m1, m2와 같이 별도로 관리되는 형태를 각각 인스턴스라고 한다

profile
개발자가 되고싶은 늦깎이 코린이

0개의 댓글