'위치'인수

=> 함수에 정의된 매개변수와 순서에 맞게 짝을 맞추어 인수를 전달한다

=> 기본적인 인수 전달방법

def 함수명(매개변수1,매개변수2, ... ,매개변수n):
     함수내용
     return 결과값
변수 = 함수명(인수1,인수2, ... ,인수n)

def greet(name, msg):
    print('안녕',name,msg)
    
greet('친구','오랜만이야')

안녕 친구 오랜만이야

 

 

■ '디폴트'인수

=> 함수를 정의할 때 매개변수에 디폴트 값을 지정하면, 디폴트 값이 지정된 인수를 생략할 수 있다.

=> 디폴트 인수는 기본 위치 인수를 다 적은 다음에 적어야한다. 

def 함수명(매개변수1,매개변수2=디폴트값):
     함수내용
     return 결과값
변수 = 함수명(인수1)  --> 인수2 생략

def greet(name, msg='오랜만이야'):
    print('안녕',name,msg)
    
greet('친구') # 디폴트 인수 msg는 생략하여도 '오랜만이야'를 출력
greet('친구','반가워') # -> 이때는 '반가워'라는 매개변수가 있기때문에 디폴트값이 수정된다

안녕 친구 오랜만이야
안녕 친구 반가워

 

def greet2(name='오랜만이야', msg):  # 디폴트 인수는 기본 위치 인수를 다 적은 다음에 적어야한다. --> 에러남
    print('안녕',name,msg)
    
greet2('친구') # 에러

SyntaxError: non-default argument follows default argument

 

 

■ '키워드'인수

=> 함수를 호출할 때 인수의 이름을 명시하면 순서를 바꾸어 전달할 수 있다.
def 함수명(매개변수1,매개변수2):
     함수내용
     return 결과값
변수 = 함수명(매개변수2이름=인수2,매개변수1이름=인수1)

def get_minus(x,y,z):
    return x-y-z
    
print(get_minus(5,10,15))
print(get_minus(z=5,x=15,y=15)) # 이처럼 함수의 인수의 위치를 바꿔서 값을 넣어줄 수 있다.

-20

-5

 

# 키워드 인수는 기본 위치 인수를 다 적은 다음에 적어야 한다.
print(get_minus(z=5,x,y=15)) 
# 인수 z에는 '5'라는 값을 먼저 넣어줬고, 기본 위치인수인 x에는 값을 넣어주지 않았을 때, 에러발생
# print(get_minus(10,20,z=30)) 가능
# print(get_minus(10,z=20,y=15)) 가능
# 이런식으로, 키워드인수가 위치인수보다 앞에 올 수 없다.

SyntaxError: positional argument follows keyword argument

 

 

■ '가변'인수

=> 매개변수에 '*'를 붙이면 여러 개의 인수를 하나의 튜플로 받는다.
def 함수명(*매개변수):
     함수내용
     return 결과값
변수 = 함수명(인수1,인수2)
변수 = 함수명(인수1,인수2,인수3) # 인수의 개수를 가변적으로 전달가능
=> 인수를 하나의 튜플이나 리스트로 전달한다.

 

# 가변적인 수를 하나의 리스트/튜플로 받아서 수의 평균을 리턴하는 함수
def average(args):
    return sum(args)/len(args)

print(average([1,2,3])) # 하나의 리스트를 받음
print(average((1,2,3,4,5))) # 하나의 튜플을 받음

2.0

3.0

 

# *로 붙이면 '튜플' 형태로 인수가 저장된다.
def average2(*args): 
    print(args)
    return sum(args)/len(args)

average2(1,2,3,4,5)

(1, 2, 3, 4, 5)

3.0

 

 


■ 함수에서 변수를 사용하는 방법

=> 함수 내에서 생성된 변수와 함수 밖에서 생성된 변수의 사용범위와 방법?
=> 전역변수(global variable) -> 함수 밖에서 생성, 프로그램 어디서든 사용
=> 지역변수(local variable) -> 해당 변수를 생성한 함수 내에서 사용가능
=> 변수의 이름이 같더라도 메모리의 위치가 다르기 때문에 다르게 쓰인다.

 

 

■ 전역변수

say1 = 'hello'
def sayhello():
    print(say1)

sayhello()

hello

 

 

■ 지역변수

def saygoodbye():
    say2 = 'goodbye' # say2는 지역변수로, saygoodbye()함수 내에서만 사용가능
    print(say2)
    
saygoodbye()

goodbye

 

참고)

a = 1

def 함수명():
    global a    # 함수 내에서 전역변수 a를 사용하겠다고 선언
    a += 1     # 이렇게 해주면 전역변수a의 값이 변하게된다

 

 

■ 함수 안에서 전역변수 값 변경하기

n1 = 1
n2 = 10

def get_plus_minus():
    n1 = 2
    plus = n1 + n2
    minus = n1 - n2
    return plus,minus

print(get_plus_minus())
print(n1)

(12, -8)
1

 

n1 = 1
n2 = 10

def get_plus_minus():
    global n1   # 함수 내에서 전역변수 'n1'을 쓰겠다는 선언
    n1 = 2
    plus = n1 + n2
    minus = n1 - n2
    return plus,minus

print(get_plus_minus())
print(n1)

(12, -8)
2

'Python 기초 공부' 카테고리의 다른 글

클래스와 객체 / 모듈과 패키지  (0) 2023.02.24
람다표현식 / map함수  (0) 2023.02.24
함수 만들기와 사용  (0) 2023.02.24
딕셔너리(Dictionary) 활용해보기  (0) 2023.02.20
딕셔너리(Dictionary)  (0) 2023.02.20

+ Recent posts