2023.01.04 (수) 파이썬 3번째 강의를 들었습니다.
[Python 문법 3]
오늘은 오늘은 함수에 대해서 배웠습니다. 언제 어떻게 사용하고, 어떤 장점이 있는지를 중점적으로 알 수 있었습니다.
1. 함수 : 반복적으로 사용되는 코드를 묶어서 사용하는 방법 (코드의 유지보수가 쉬워짐)
- def, return, argument, parameter, docstring, scope, lamda
- 사용방법 : 함수 선언 (코드 작성) -> 함수 호출 (코드 실행)
- def
import random
# 1. 로또번호 저장 변수 생성
lotto = []
# 2. 아래의 코드 반복 : while
while True:
# 2-1. 1 ~ 45 랜덤한 숫자 출력 후 저장 : random_number : random.randint()
random_number = random.randint(1, 45)
# 2-2. lotto 리스트에 random_number 없으면, random_number를 lotto 변수에 추가 : list.append()
# if random_number not in lotto:
# lotto.append(random_number)
# 2-2. random_number를 lotto 변수에 추가 : list.append()
lotto.append(random_number)
lotto = list(set(lotto))
# 2-3. lotto의 데이터 갯수가 6개 이상이면 반복 중단 : if, len(), break
if len(lotto) >= 6:
break
# 3. 로또번호 출력 : print()
lotto.sort()
print(lotto)
# 로또번호출력
lotto = []
while True:
random_number = random.randint(1, 45)
lotto.append(random_number)
lotto = list(set(lotto))
if len(lotto) >= 6:
break
lotto.sort()
print(lotto)
# 파이썬출력
print('python')
# 로또번호출력
lotto = []
while True:
random_number = random.randint(1, 45)
lotto.append(random_number)
lotto = list(set(lotto))
if len(lotto) >= 6:
break
lotto.sort()
print(lotto)
로또번호 출력을 7번 하고 싶다면? 로또번호출력 코드를 7번 붙여넣어야 하는 번거로움이 발생함.
이 때, 함수를 이용해서 해결할 수 있다.
# 함수선언(코드작성)
def display_lotto():
lotto = []
while True:
random_number = random.randint(1, 45)
lotto.append(random_number)
lotto = list(set(lotto))
if len(lotto) >= 6:
break
lotto.sort()
print(lotto)
# 함수호출(코드실행)
display_lotto()
# 함수선언
def display_lotto():
lotto = []
while True:
random_number = random.randint(1, 45)
lotto.append(random_number)
lotto = list(set(lotto))
if len(lotto) >= 6:
break
lotto.sort()
print(lotto)
# 로또번호출력
display_lotto()
# 파이썬출력
print('python')
# 로또번호출력
display_lotto()
함수 로직을 1번만 수정해서 사용하면 되서, 효율성이 높아진다.
- argument, parameter : 함수를 호출하는 코드에서 함수를 선언하는 코드로 데이터를 전달할 때 사용
-parameter(함수 선언)는 변수로 생각하기
-argument(코드 실행)
-parameter와 argument는 개수가 동일해야 함, default parameter를 설정하면 동일한 개수가 아니어도 작동함
# 함수선언(코드작성)
def plus(n1, n2): # n1, n2 : parameter
print(n1 + n2)
# 함수호출(코드실행)
plus(1, 2) # 1, 2 : argument
출력 결과 -> 3
# 함수선언(코드작성)
def plus(n1, n2=10, n3=20): # n1 : parameter, n2=10, n3=20 : default parameter
print(n1 + n2 + n3)
# 함수호출(코드실행)
plus(1, 5) # 1 : argument
출력 결과 -> 26
n1과 n3사이에 디폴드 파라미터가 20개가 있다고 하면?
keyword argument를 사용한다.
# 함수선언(코드작성)
def plus(n1, n2=10, n3=20): # n1 : parameter, n2=10, n3=20 : default parameter
print(n1 + n2 + n3)
# 함수호출(코드실행)
plus(1, n3=100) # 1 : argument, n3=1000 : keyword argument
* 심화 *
여러개의 데이터를 보냈을 때, 파라미터에서 컬렉션 데이터 타입으로 받아주면 1개의 식별자로 n개의 데이터 받을 수 있음
아규스 : 여러개 데이터를 하나의 변수로 받아줌 (키워드 없는 경우)
키워드아규스 : 키워드가 있는 거는 딕셔너리로 (키워드 있는 경우)
키워드아규먼트는 키워드가 없는 아규먼트 뒤에 와야 함
디폴트 파라미터는 디폴트 값이 없는 파라미터 뒤에 사용
- return : 함수를 호출해서 결과로 나온 데이터를 다른 변수에 저장할 때, 함수의 코드를 중단할 때 사용(break처럼)
-브레이크는 반복문만 빠져나오고, 리턴은 함수 코드를 중단시킴 (브레이크였으면 'Done'이 출력)
# 함수의 코드 실행 중단
def echo(msg, count=2):
for idx in range(count):
if idx >= 3:
return
print(msg)
print('Done')
출력결과-> python
python
python
- docstring : 함수의 설명을 작성하는 것, 함수선언코드 바로 아래에 멀티라인 문자열로 작성
- scope : 함수 밖(global / 전역영역) 함수 안 (local / 지역영역)
- lambda : 간단한 함수를 함수 선언 없이 사용 (데이터 전처리할 때 자주 사용하는 함수)
2. list comprehension : 간단한 반복문, 조건문을 사용해서 리스트 데이터를 만들 때 사용하는 문법
- 주로 리스트 데이터를 필터링 하거나 데이터를 변경할 때 사용
'AI School 8기 (LIKELION, 22.12~23.05)' 카테고리의 다른 글
[AI School/TIL] Python 5일차_23.01.06 (0) | 2024.02.23 |
---|---|
[AI School/TIL] Python 4일차_23.01.05 (0) | 2024.02.23 |
[AI School/TIL] Python 2일차_23.01.03 (0) | 2024.02.23 |
[AI School/TIL] Python 1일차_23.01.02 (0) | 2024.02.23 |
[AI School/WIL] 1주차 자기주도 학습_22.12.23 (0) | 2024.02.23 |