1. 함수의 정의
(자바에서는 메서드 시그니쳐 라고 하지만, 파이썬에서는 해당 단어를 잘 사용 하지 않는다)
# 함수의 3요소 == 메서드 시그니쳐 (JAVA)
# 인자 == 인수 == input == 입력값 == 매개변수 == args == 파라미터
# 반환값 == 리턴값 == return == 출력값 == 결과값 == output
# 함수의 기능 == 함수명
# 함수는 보라색 이다.
# 함수명은 함수의 기능을 유추 할 수 있게 만든다.
"""
type()
print()
range()
"""
2. 사용자 정의 함수 << >> 내장 함수
# 사용자 정의 함수 (원래 파이썬에 존재하는 함수는 내장 함수 라고 한다)
# def 키워드를 사용해서 함수를 선언 == 정의
# 함수를 사용 하려면 함수를 호출 해야 한다.
def printApple():
print('apple')
printApple()
3. 함수 사용의 장점
# 함수 사용의 장점
# 코드 재사용성 용이
# 유지보수 용이
# 오류의 파급효과 절감 (잘 만들어진 함수를 재사용 하기 때문에 오류가 날 가능성이 낮아진다)
# 개발 시간 및 비용 절감 (이미 만들어진 로그인 SNS API를 가져와서 사용 하는 개념)
4. 함수 정의 == 선언 방법
def 키워드를 사용 한다.
def funcA(a):
print('a = ', a)
def funcB(b):
print('b = ', b)
return b
funcB() # TypeError: funcB() missing 1 required positional argument: 'b' -> 필수적으로 인자 1개가 필요 !
funcB(-13)
banana = funcB(-13)
>> funcB(b) 정의 함수를 호출 할 때, 인자값을 주지 않으면 에러가 발생 한다.
def funcC():
return 1234
def funcD():
for i in range(10): # IndentationError: expected an indented block after 'for' statement on line 51
위와 같이 함수 내부에 for 문 등으로 무언가를 작성 하다가 완성을 하지 않으면 빨간색 밑줄이 뜨면서 에러가 발생 한다.
이렇게 아직 미완성인 함수 일 때, 얘를 무시 하고 일단 넘어 가고 싶으면 pass 키워드를 사용 한다.
def funcD():
for i in range(10):
pass # 아직 미완성인 함수 일 때 pass 키워드를 명시 해서 에러가 발생 하지 않도록 할 수 있다.
5. 애스터리스크 란 ?
>> 별이 붙어 있는 매개변수를 애스터리스크 ( * ) 라고 하고 이것을 가변 매개 변수 라고 한다.
def funcE(*a): # 애스터리스크 -> * => 별이 붙어 있는 매개변수를 가변 매개 변수 라고 한다.
print(a)
print(type(a)) # 가변 매개 변수는 tuple == 튜플 타입으로 넘어 오게 된다.
for data in a:
print(data)
funcE(1, 2, 3, 4)
funcE('apple', 1234, 3.14)
>> 가변 매개 변수는 튜플 == tuple 타입 이다.
6. 디폴트 매개변수
>> 매개변수의 값을 디폴트로 설정 해줄 수 있다.
>> 디폴트 매개변수 설정 개수는 무한대로 가능 하다.
def funcF(a, b, c=123): # 디폴트 매개변수 (무한대로 설정이 가능 하다)
print('a = ', a)
print('b = ', b)
print('c = ', c)
funcF(-1, -2, -3)
print()
funcF(-1, -2)
print()
funcF() 함수를 정의 하고, 호출 할 때, 인자의 값으로 각각 -1, -2, -3 을 넣어주면
위와 같이 콘솔창에 나오는 것을 확인 할 수 있다. (print() 은 띄어쓰기를 위해 작성 ..)
반면에,
-1, -2 는 넣어줬는데 세번째 인자 값을 넣어주지 않고 funcF() 함수를 호출 하면 어떻게 될까 ?
정답은 디폴트 값을 설정 해줘서 아래와 같이 print() 가 되게 된다.
만약에 매개변수의 값을 디폴트로 설정해 주지 않는다면 ?
이렇게 에러가 뜨게 된다.
7. 파이썬의 print() 함수
# 파이썬의 print() 함수는 디폴트로 자바의 println() 처럼 줄바꿈이 된다.
print('안녕하세요 !')
print('파이썬 2일차 입니다 ㅎ_ㅎ')
print('ㅎㅎ')
# 줄바꿈을 원치 않으면 아래와 같이 하면 된다. 즉, print() 함수의 매개변수 로는 end 라는 인자값이 있다.
# end는 디폴트 매개변수 값으로 '\n' 을 갖고 있었다는 것을 알 수 있다.
print('안녕하세요 ! ', end='')
print('파이썬 2일차 입니다 ㅎ_ㅎ')
print('ㅎㅎ')
파이썬의 print() 함수는 디폴트로 자바의 println() 함수 처럼 줄바꿈 기능을 내장 하고 있다.
만약에 줄바꿈을 원치 않으면 어떻게 해야 할까 ?
print() 함수의 매개변수로는 end 라는 인자값이 존재 한다.
이 end 라는 인자값의 디폴트 값은 '\n' 으로 되어 있다.
그래서 줄바꿈을 원치 않으면 print() 함수의 인자값에 end = '' 으로 설정해주면 줄바꿈이 적용 되지 않게 된다.
8. 모듈 == module 이란 ?
# 모듈 module == 라이브러리 => 자바의 클래스 역할
# .py 파이썬 파일
# 모듈 module 이라는 표현을 사용 할 때는 아래와 같다.
# 누군가 기능을 바로 사용 할 수 있도록 미리 구현해놓은 .py 파일을 모듈 이라고 하고, 라이브러리 라고도 볼 수 있다.
# import 키워드를 사용 해서 math (모듈) 안에 있는 것들을 사용 하기.
# 별도의 라이브러리 설치 필요 없이 사용 할 수 있는 모듈을 '표준 모듈' 이라고 한다.
# 설치 해야 사용 가능한 모듈을 '외부 모듈' == '패키지' == 'package' 라고 한다.
파이썬의 확장자명은 .py 이다.
모듈이란 개념은 자바의 라이브러리와 같다고 볼 수 있는데, 자바의 라이브러리는 .java 파일 이다.
즉, 클래스 파일인데, 마찬가지로 파이썬도 .py로 끝나는 파일 (클래스 == 라이브러리 == 모듈) 을 사용 할 수 있다.
자바와 마찬가지로 import 키워드를 통해 사용 가능 하다.
이렇게 별도의 라이브러리 설치 필요 없이 바로 사용 할 수 있는 모듈을 '표준 모듈' 이라 한다.
별도의 설치를 통해 사용 해야 하는 모듈은 '외부 모듈' == '패키지' == 'package' 라고 한다.
import math
print('============================')
print(math.pi)
print(math.pow(2, 5))
import math 를 작성 하여 math.py 모듈을 불러와 사용 할 수 있다.
그러면 해당 모듈 내부에 있는 모든 함수 == 메서드 를 사용 할 수 있게 된다.
pow(2, 5) 함수는 2 라는 숫자를 5번 거듭 제곱 하겠다는 기능을 가진 함수 이다.
2*2*2*2*2 = 32 가 된다.
9. 모듈 내부에 특정 함수 (객체) 만 가져 오기
# 가져올 모듈의 크기가 너무 크다고 가정해보자.
# 그 안에 몇가지 함수만 사용할 예정 인데 모두 가져오는것은 비효율적이지 않겠는가 ?
# 이런 경우에는 from '모듈명' import '사용할 함수명'
# 으로 작성 하면 된다.
from random import randrange
print('============================')
print(randrange(10)) # 0 ~ 9 범위에서 랜덤한 숫자 1개
print(randrange(1, 10)) # 1 ~ 9 범위에서 랜덤한 숫자 1개
# 사용할 함수명을 여러개 작성 할 수도 있다.
from random import randrange, choice
print('============================')
print(randrange(10))
print(randrange(1, 10))
print(choice([10, 11, 13, 15, 23]))
# 모듈명이 너무 길거나 또는 가독성을 위해 모듈명에 별칭을 부여 할 수도 있다. (alias == 별칭 == 별명)
import random as r
print('============================')
r = r.randrange(10)
print(r)
# 모듈 안에 사용할 함수명에도 별칭을 부여 할 수도 있다. (alias == 별칭 == 별명)
from random import randrange as rr
print('============================')
rr = rr(1, 10)
print(rr)
>> 사용할 함수 (객체) 가 여러개 이면, 여러개 지정도 가능 하다.
>> 모듈명이 너무 길다 ? 가독성 또는 사용자 편의성을 위해 모듈에 별칭을 부여 할 수도 있다.
as 키워드
>> 모듈 안에 사용할 함수명에 별칭을 부여 할 수도 있다.
'파이썬 (Python) > 이론' 카테고리의 다른 글
[ 파이썬 이론 ] 예외 처리 (1) | 2023.10.21 |
---|---|
[ 파이썬 이론 ] 파일 입출력 (0) | 2023.10.19 |
[ 파이썬 이론 ] 문자열 / List / tuple /set / dict / 포맷팅 / if-else / for / for each / sorted (1) | 2023.10.16 |