■ '위치'인수
=> 함수에 정의된 매개변수와 순서에 맞게 짝을 맞추어 인수를 전달한다
=> 기본적인 인수 전달방법
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 |