공부/Python

[Python 기초] 함수, Global

tea_pixel 2024. 8. 24. 12:00
반응형

10. 함수

기본 함수 외, 필요한 함수를 만들어서 사용할 수 있다.

def 함수이름(매개변수)
    수행할 문장 1
    수행할 문장 2

    return 결과값

매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수

인수(arguments):함수를 호출할 때 전달하는 입력값

 

# 함수 예제

def add(a,b):
    return a+b

add(3,4)
# 결과 : 7

 

return

 

함수의 결과 값을 함수 밖에서도 변수로 사용되게 함.

return을 통해 함수 밖으로 나오지 않은 값들은 함수 밖에서 사용할 수 없음.

함수 내부에서 print() 함수를 사용하더라도, return에 없다면 결과 값이 저장되지 않음

# return에 포함되지 않은 point 함수

def add(a,b):
    print(a+b)

add(1,2)
# 결과 : 3

result = add(1,2)
result
# 결과 : (없음)

 

return을 통해 하나의 값만 내보낼 수 있음

중복 사용 시 첫 번째 return 값만 출력됨

# 중복 return 예제

def add_mul(a,b):
    return a+b
    return a*b

add_mul(1,2)
# 결과 : 3

 

*args

 

입력값의 개수가 유동적일때 사용

* 을 붙임으로써 유동적인 의미를 부여

# *args 예제

def add_many(*args):
    total = 0
    for i in args:
        total = total + i
    return total
    
add_many(1,2,3)
# 결과 : 6

 

*args의 데이터 유형을 확인해 보면, Tuple 임을 알 수 있다.

# args 데이터 유형 확인

def add_many(*args):
    total = 0
    for i in args:
        total = total + i
    print(type(args))
    print(args)
    return total
    
add_many(1,2,3)

# 결과 : <class 'tuple'>
#	(1, 2, 3)
#	6

 

 

또한 일반 변수와 *args을 같이 사용할 수 있다.

# 일반 변수와 *args의 혼합 예제

def add_many(word,*args):
    total = 0
    for i in args:
        total = total + i
    return print(f'{word}은 {total}') 

word = '총 합'
add_many(word,1,2,3)
# 결과 : 총 합은 6

 

args 대신 다른 변수명을 사용할 수 있음

하지만 def에서 일반 변수 앞에 선언하면 에러남.

# *args 대신 다른 변수 사용

def add_many(word,*number):
    total = 0
    for i in number:
        total = total + i
    return print(f'{word}은 {total}') 

word = '총 합'
add_many(word,1,2,3)

# 결과 : 총 합은 6
# *args을 먼저 def에 넣으면 에러

def add_many(*number,word):
    total = 0
    for i in number:
        total = total + i
    return print(f'{word}은 {total}') 
    
# def 함수 생성에는 에러가 발생 안함.

word = '총 합'
add_many(word,1,2,3)
# 출력시 에러

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-e7ebfad3cab7> in <cell line: 2>()
      1 word = '총 합'
----> 2 add_many(word,1,2,3)

TypeError: add_many() missing 1 required keyword-only argument: 'word'

 

Global 함수

 

매개변수의 입력 없이 함수 안에서 함수 밖의 변수를 직접 사용할 때 사용

# Global 함수 예제

out=100
def test():
    global out
    out = out + 1
    return out
    
test()
# 결과 : 101
out
# 결과 : 101

 

외부 값인 out이 global 함수로 인해 값이 변화함

외부 변수에 종속적인 함수이므로 좋은 함수라 할 수 없음.

global 함수를 주의해서 사용해야 하는 이유.

 

Ref

 

렛유인 - 파이썬 데이터 분석 - 기초이론

렛유인 - 파이썬 데이터 분석 - 전처리&시각화

728x90