아래의 내용은 'Do it! 점프 투 파이썬' 책을 공부하며 정리하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K362833219&start=pnaver_02
Do it! 점프 투 파이썬
챗GPT를 시작으로 펼쳐진 생성 AI 시대에 맞춰 설명과 예제를 다듬고, 최신 경향과 심화 내용을 보충했다. 또한 이번 개정 2판도 50만 코딩 유튜버인 조코딩과 협업을 통해 유튜브 동영상을 제공해
www.aladin.co.kr
드디어 뼈대를 공부하기 시작했습니다! 확실히 함수를 들어가니까 코드가 더 풍성해지고 실습하는 것도 재미가 있네요. 오늘은 함수에 대해서 정리해보도록 하겠습니다.
함수
입력값을 가지고 어떤 일을 수행한 후 그 결과물을 내어 놓는 것이 바로 함수가 하는 일입니다. 함수의 기본 구조는 아래와 같습니다. "def"는 함수를 만들 때 사용하는 예약어입니다.
def 함수_이름(매개변수):
수행할_문장1
수행할_문장2
...
매개변수와 인수
매개변수(parameter)와 인수(arguments)는 혼용해서 사용하는 용어입니다. 매개변수는 함수에 입력으로 전달된 값을 받는 변수이고, 인수는 함수를 호출할 때 전달하는 입력값을 의미합니다.
def add(a, b) <- a, b가 매개변수
return a + b
result = add(1, 2) <- 1, 2가 인수
함수의 형태
1. 일반적인 함수 (입력값과 리턴값이 존재)
2. 입력값이 없는 함수
3. 리턴값이 없는 함수
4. 입력값, 리턴값이 없는 함수
* None을 리턴한다는 것은 리턴값이 없다는 것입니다.
매개변수를 지정하여 호출하기
매개변수를 지정하면 다음과 같이 순서에 상관없이 사용할 수 있다는 장점이 있습니다.
여러 개의 입력값을 받고 싶을 때
"*args"처럼 매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아 튜플로 만들어 줍니다. "args"는 arguments의 약자로 관례적으로 사용하는 것이지 변수명은 임의로 작성하면 됩니다.
아래와 같이 매개변수로 "*args" 하나만 사용할 수 있는 것은 아닙니다. 다른 매개변수와 같이 사용할 수 있습니다.
키워드 매개변수, kwargs
키워드 매개변수를 사용 할 때는 매개변수 앞에 별 2개(**)를 붙입니다. "**kwargs"처럼 매개변수 이름 앞에 **을 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 Key=Value 형태의 입력값이 그 딕셔너리에 저장됩니다. "kwargs"는 keyword arguments의 약자로, args와 마찬가지로 관례적으로 사용하는 변수명이며 임의로 작성하여 쓰시면 됩니다.
함수의 리턴값은 언제나 하나
아래와 같이 resturn a+b, a*b를 리턴값으로 받으면 오류가 날 것 같지만 그렇지 않습니다. 리턴값 a+b, a*b를 튜플값으로 하나인 (a+b, a*b)로 리턴됩니다.
단, 아래와 같이 return 문을 2번 사용하면 두 번째 return 문은 실행되지 않습니다. 함수는 return 문을 만나느 순간, 리턴값을 돌려 준 다음 함수를 빠져나가기 때문입니다.
def add(a, b)
return a + b <- 여기서 리턴값 출력하고 함수를 빠져나감
return a * b <- 출력 안 됨
매개변수 초기화
아래 실습의 "man=True"와 같이 매개변수를 초기화 할 수 있습니다. 함수 호출 시 "man" 인수를 입력하지 않아도 초기값인 "True"를 가지고 있어, 오류가 나지 않습니다. 단, 주의할 점은 초기화하고 싶은 매개변수는 항상 뒤쪽에 놓아야 한다는 것을 잊지 말아야 합니다!
global 명령어
"global a" 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻입니다. 하지만, 프로그래밍을 할 때 global 명령어는 사용하지 않는 것이 좋습니다. 함수는 독립적으로 존재하는 것이 좋기 때문입니다. 따라서, 함수 안에서 함수 밖의 변수를 변경하고 싶을 때는 global 명령어 보다는 return을 사용하는 것이 좋습니다.
lambda 예약어
lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 합니다. 보통 함수를 한줄로 간결하게 만들 때 사용합니다. def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 사용합니다. lambda로 만든 함수는 return 명령어가 없어도 표현식의 결괏값을 리턴합니다.
역시나 파이썬만의 재미난 특징들이 많은 장이였습니다. 간결함의 끝판왕이네요. 오늘 실습한 내용은 아래와 같습니다.
실습 - 전체 (입력)
실습 - 전체(출력)
오늘의 공부 끝!
'Programming Language > Python' 카테고리의 다른 글
[Do it! 점프 투 파이썬 13일차] 4장_파이썬의 입출력 (되새김문제) (1) | 2024.04.09 |
---|---|
[Do it! 점프 투 파이썬 11-12일차] 4장_파이썬의 입출력 (사용자 입출력, 파일 읽고 쓰기, 프로그램의 입출력) (0) | 2024.04.09 |
[Do it! 점프 투 파이썬 9일차] 3장_프로그램의 구조를 쌓는다! 제어문 (되새김문제) (3) | 2024.04.03 |
[Do it! 점프 투 파이썬 8일차] 3장_프로그램의 구조를 쌓는다! 제어문 (while 문, for 문) (2) | 2024.04.03 |
[Do it! 점프 투 파이썬 7일차] 3장_프로그램의 구조를 쌓는다! 제어문 (if 문) (2) | 2024.04.01 |
댓글