Python 함수 - 기본구조3

Nicholas·2022년 4월 23일
0

Python

목록 보기
14/31
post-thumbnail

1. 매개변수에 인수의 초기값 미리 설정

1-1. 대전제 : 매개변수에 초기값을 설정할경우 그 초기값은 매개변수 값들중 가장 마지막에 와야한다.

def say_myself(name, old, man=True):
    print("나의 이름은 %s입니다. %name)
    print("나의 나이는 %s살 입니다. %old)
        if man:
           print("남자입니다")
           
        else
            print("여자입니다")

man의 변수에 아무것도 넣지않는다면 기본적으로 True값을 같는다.

say_myuself(철수, 23)

>>>나의 이름은 철수입니다.
   나의 나이는 23살 입니다.
   남자입니다.

say_myuself(철수, 23, Ture)

>>>나의 이름은 철수입니다.
   나의 나이는 23살 입니다.
   남자입니다.
   
say_myuself(영희, 24, False) 

>>>나의 이름은 영희입니다.
   나의 나이는 24살 입니다.
   여자입니다.

2. 변수의 범위

함수 안에 있는 변수 a와 함수 밖에 있는 변수 a는 다르다.
그래서 a = 1의 변수가 함수 안으로 들어갔지만 함수를 나갈수 있는 유일한 방법인 return이 없어서 못나가고
a = 1 변수 있는 그대로 print로 출력된다.
왜냐하면 함수를 나갈수 있는방법은 return뿐이기 때문이다.

a = 1
def vartest(a):
    a = a + 1
    
vartest(a)
print(a)

>>> 1

2-1. 해결방법1: return 사용

a = 1
def vartest(a):
    a = a + 1
    return a
    
vartest(a)
print(a)

>>> 2

2-2. 해결방법2: global명령어 사용

a = 1
def vartest():
    global a
    a = a + 1
    
vartest()
print(a)

>>> 2

global명령어는 밖에 있는 변수를 직접사용 한다라는 명령어로, 외부에 있는 a의 인자를 global명령어로 가져와 함수를 돌린뒤 출력한다.
global명령어는 return이 필요 없다.
단. global명령어는 어쩔수 없는 경우를 제외하고는 사용을 피하는 것이 좋다.

3. lambda 함수

공통점 : def와 동일한 역할을 한다.
차이점 : 결과값이 나오는데 return이 필요없다.
사용처 : def함수를 사용할수 없을때, 함수를 한줄로 간결하게 만들어야 할때

기본구조 : 함수이름 = lambda 매개변수1, 매개변수2... :매개변수를 사용한 표현식
add = lambda a, b: a+b
#함수이름 = lambda 매개변수1, 매개변수2: 표현식

result = add(3, 5)
print(result)

>>> 8
profile
WEB Developer

0개의 댓글