프로그래밍

[Python] 사용자 함수 본문

Python/파이썬 기초

[Python] 사용자 함수

시케 2023. 11. 6. 10:09
728x90
반응형

사용자 함수

사용자가 직접 만든 함수로

def 키워드를 통해 새로운 함수를 정의할 수 있다

# 함수 정의
def 함수명(매개변수):
	본문
    return 반환값
# 함수 호출
변수 = 함수명(인수)
함수명()
변수 = 함수명()
변수 = 함수명(인수)

print(함수명())

인수와 매개변수

# 인수가 정해진 함수
def introduce(name, age):
	print('내 이름은 {}이고, 나이는 {}살입니다.'.format(name, age))
    
introduce('james', 25)
# 가변 매개변수를 인수로 가지는 함수
def show():
	for item in args:
    	print(item)
show('python')				# show 함수 호출: 인수 1개
show('happy', 'birthday')	# show 함수 호출: 인수 2개

 

함수로 전달해야 하는 인수가 개수가 정해지지 않아도 매개변수를 선언할 수 있다

이를 가변 매개변수라고 한다

가변 매개변수를 만드는 키워드는 애스터리스크(*)이다

# 디폴트 매개변수를 가지는 함수
def greet(message='안녕하세요'):
	print(message)
    
greet('반갑습니다')	 # 반갑습니다
greet()				  # 안녕하세요

 

더보기

디폴트 매개변수를 사용할때의 주의사항

# 오류코드
def greet(message='안녕하세요', name):
	print('{}님 {}'.format(name, message))
    
greet('김철수')

 

위 코드에서 message는 디폴트 값 '안녕하세요'를 사용하고 name에 '김철수'가 전달되는 것처럼 보인다

하지만 '김철수'라는 인수를 매개변수 message에 저장하기 때문에 name에 전달되는 값이 없다

# 오류 해결코드
def greet(name, message='안녕하세요'):
	print('{}님 {}'.format(name, message))
    
greet('김철수')

항상 디폴트값을 가지는 매개변수는 뒤에 배치하는 게 좋다

반환값

# 반환값이 있는 함수
def address():
	str = '우편번호 12345\n'
    str += '서울시 영등포구 여의도동'
    return str

print(address())
# 우편번호 12345
# 서울시 영등포구 여의도동
# 다중 반환 함수
def calculator(*args):
	return sum(args), sum(args)/len(args), max(args), min(args)

a, b, c, d = calculator(1, 2, 3, 4, 5)
print('합계', a)
print('평균', b)
print('최댓값', c)
print('최소값', d)

파이썬은 하나의 반환값뿐만 아니라 여러 개의 반환값도 처리할 수 있다

정확히는 반환값이 4개인 것처럼 보이지만

반환값 4개를 1개의 튜플로 만들어서 반환하는 형태이다

지역변수와 전역변수

지역변수(local variable)는 함수 내부에서 선언한 변수이다

함수 외부에서는 지역변수에 접근할 수 없다

 

전역변수(global variable)는 함수 외부에서 선언한 변수이다

함수 내부와 외부에서 모두 사용할 수 있다

 

# 지역 변수를 단순히 참조만 하는 경우
>>> a = 0
>>> def f():
		print(a)	# 함수 f() 내부에서 전역변수 a를 참조
>>> f()
0
>>> print(a)		# 함수 f() 외부에서 전역변수 a를 참조
0

위의 경우에는 단순 참조이므로 바로 사용하면 된다

# 전역 변수의 값을 변경하는 경우
>>> a = 0
>>> def f():
	global a	# 전역변수 a를 사용
	a = 10		# 전역변수 a의 값을 변경
>>> f()				# 함수 f()를 실행
>>> print(a)		# 전역변수의 변경된 값 확인
10

변수 a가 전역변수임을 알리는 global a를 생략하면

a는 전역변수가 아닌 지역변수가 되므로 전역변수 a의 값은 변경되지 않는다

 

728x90
반응형

'Python > 파이썬 기초' 카테고리의 다른 글

[Python] 파일 입출력  (0) 2023.11.07
[Python] 모듈과 import  (0) 2023.11.07
[Python] 메서드  (0) 2023.11.06
[Python] 내장함수  (0) 2023.11.06
[Python] 파이썬의 제어문  (0) 2023.11.05
Comments