이롭게 현명하게

[Python] 파이썬 함수 매개변수 본문

Python

[Python] 파이썬 함수 매개변수

dev_y.h 2023. 3. 28. 18:32
728x90
반응형

※ 본 포스팅은 윈도우 11, Pycharm, Python3 환경에서 작성되었습니다.


 

목차

매개변수 지정하여 호출하기

입력값이 몇 개가 될지 모를 때

키워드 매개변수 kwargs

함수의 리턴값은 한 개

매개변수에 초기값 미리 설정하기

함수 안에서 선언한 변수의 효력 범위

함수 안에서 함수 밖의 변수 변경하기

lamda

 


<정리>

 


[매개변수 지정하여 호출하기]

함수를 호출할 때 매개변수를 지정할 수 있다.

매개변수를 지정할 때 순서에 상관없이 사용할 수 있다.

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

result = add(a=3,b=4)
print(result)

result = add(b=3,a=4)
print(result)

[입력값이 몇 개가 될지 모를 때]

여러 개의 입력을 처리할 대 매개변수에 '*'을 붙여준다.

 

입력값을 여러 개 받는 함수

함수의 형태에서 매개변수에서 *매개변수로 바뀌었다.

def 함수이름(*매개변수):
    수행할 문장
    ...

args는 arguments의 약자이다.

*args는 임의로 정한 변수명이다.

사용자가 자유롭게 변경해도 된다.

def add(*args):
    result = 0
    for i in args:
        result = result + i
    return result

result = add(1,2,3)
print(result)

 

def add(ch,*args):
    result = 0
    if ch == 'add':
        result = 0
        for i in args:
            result = result +i
    elif ch == 'mul':
        result = 1
        for i in args:
            result = result * i
    return result

result1 = add('add',1,2,3,4)
result2 = add('mul',1,2,3,4)
print(result1) # 10
print(result2) # 24

[키워드 매개변수 kwargs]

kwargs는 keyword arguments의 약자이며 args와 마찬가지로 관례적으로 사용한다.

def 함수명(**kwargs):
    수행할 문장1
    수행할 문장2

kwargs는 딕셔너리가 된다.

매개변수 앞에 '**'을 붙이면 매개변수는 딕셔너리가 되며 모든 key=value형태의 입력값이 딕셔너리에 저장이 된다.

def print_kwargs(**kwargs):
    print(kwargs)

print_kwargs(a=1) # {'a': 1}
print_kwargs(name='foo',age=3) # {'name': 'foo', 'age': 3}

 


[함수의 리턴값은 한 개]

add_and_mul. 함수는 2개의 입력 인수를 입력받아 더한 값과 곱한 값을 리턴한다.

리턴값은 a+b와 a*b 2개인데 리턴값은 튜플값 하나인(a+b, a*b)으로 리턴이 된다. 

하지만 return a-b는 실행되지 않는다.

함수는 return문을 만나는 순간 리턴값을 돌려준 다음에 함수를 빠져나가기 때문이다.

def add_and_mul(a,b):
    return a+b,a*b
    return a-b

print(add_and_mul(2,3))

만약 하나의 튜플 값을 2개의 값으로 분리하여 받고 싶다면 변수 2개로 받을 수 있다.

def add_and_mul(a,b):
    return a+b,a*b
    return a-b
r1,r2 = add_and_mul(2,3)
print(add_and_mul(2,3)) # (5, 6)
print(r1) # 5
print(r2) # 6

[매개변수에 초기값 미리 설정하기]

매개변수 b=5 : 매개변수에 미리 값을 넣은 것

def add_and_mul(a,b=5):
    return a+b

매개변수에 값을 넣지 않아도 초기값이 설정되어 있다.

def add_and_mul(a,b=5):
    return a+b
a = add_and_mul(3)
b = add_and_mul(3,9)

print(a) # 8
print(b) # 12

초기값이 있는 매개변수를 설정할 때는 항상 뒤쪽에 놓아야 한다.

def add_and_mul(a,b=5): # 
def add_and_mul(a, b=5,c): # Error

[함수 안에서 선언한 변수의 효력 범위]

변수 a를 생성하고 초기값을 1로 설정하였다.

vartest함수에서 매개변수 a의 값에 1을 더했으니 a는 2가 될 것 같지만 결괏값은 1이 나온다.

그 이유는 함수 안에서 사용하는 매개변수는 함수 안에서만 사용하는 "함수만의 변수"이기 때문이다.

즉 def vartest(a)에서 입력값을 전달받은 매개변수는 함수 안에서만 사용하는 변수이지 함수 밖의 변수와는 전혀 상관이 없다.

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

vartest(a)
print(a) # 1

[함수 안에서 함수 밖의 변수 변경하기]

  1. return사용하기
  2. global 명령어 사용하기

1. return 사용하기

vartest 함수는 입력으로 들어온 값에 1을 더한 값을 리턴하도록 변경했다.

따라서 a = vartest(a)라고 작성하면 a에는 vartest함수의 리턴값이 대입된다.

이때 vartest함수 안의 a 매개변수는 함수 밖의 a와는 다른 것이다.

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

a=vartest(a)
print(a) # 2

2. global 명령어 사용하기

vartest함수 안의 global a 문장은 함수 안에서 함수밖의 a 변수를 직접 사용한다는 것이다.

하지만 프로그래밍을 할 때 global명령어를 사용하는 것은 추천하지 않는다.

함수는 독립적으로 조재하는 것이 좋기 때문이다.

외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다.

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

a=vartest()
print(a) # 2

[lamda]

lamda : 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다.

함수를 한 줄로 간결하게 만들 때 사용한다.

def를 사용할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 사용된다.

함수면 = lamda 매개변수1,매개변수2...

 

add = lambda a,b : a+b
result = add(3,4)
print(result) # 7

 

 

 

 

[Python] 프로그램 입출력 / sys모듈

import sys 파이썬에서는 sys모듈을 사용하여 프로그램에 인수를 전달할 수 있다. sys모듈을 사용하려면 import sys를 해야 한다. # sys1.py # import sys args = sys.argv[1:] for i in args: print(i) 이 프로그램을 디렉

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

 

728x90
반응형

'Python' 카테고리의 다른 글

[Python] 파이썬 클래스  (0) 2023.03.30
[Python] 프로그램 입출력 / sys모듈  (0) 2023.03.29
[Python] 파이썬 사용자 함수  (0) 2023.03.27
[Python] 파이썬 사용자 입출력  (0) 2023.03.24
[Python] 파이썬 for문  (0) 2023.03.23
Comments