일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- pandas
- Machine Learning
- 데이터 분석가
- python
- data analyst
- 데이터 사이언티스트
- 파이썬
- 데이터분석가
- SQL
- MachineLearning
- data
- Deeplearning
- deep learning
- numpy
- EDA
- machinelearing
- 멋쟁이사자처럼
- Data Scientist
- machineleaning
- data analysis
- AISCHOOL
- DNN
- CNN
- Tableau
- ai
- Data Science
- 범죄통계
- Today
- Total
Molybdenum의 개발기록
[TIL] 8일차_PYTHON_Function_01 본문
Quiz. 로또 번호 출력(list)
1~45의 랜덤한 숫자 6개 출력
(숫자 6개가 중복데이터가 없어야 함)
list.append()
= list 데이터에 데이터를 추가
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)
▶ 함수(Function)
= 반복적으로 사용되는 코드를 묶어서 사용하는 방법으로 코드의 유지보수가 쉬워진다.
- def, returm argument, parameter, docstring, scope, lambda
- 사용법 : 함수선언(코드작성) -> 함수호출(코드실행)
▶ 함수선언(코드작성)
= 함수를 만든다
파이썬 함수 선언 => def 사용
def func():
print("함수의 동작 구현")
▶ 함수호출(코드실행)
func()
▶ argument(인자) = 인수는 함수를 호출할 때, 함수에서 요구하는 매개변수에 전달하는 값이다.
▶ parameter(매개변수) = 함수나 메소드에서 사용할 값을 외부에서 받아들이기 위해 정의한 변수이다.
= > 함수를 호출하는 코드에서 함수를 선언하는 코드로 데이터 전달할 때 사용
# 함수선언(코드작성)
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
Quiz. 이해를 위한 예시 문제
- 숫자의 범위와 숫자의 갯수를 argument로 설정해서 함수를 호출할 수 있도록 함수를 수정한다.
- display_lotto를 호출할 때 파라미터가 없으면 1~45까지 6개의 숫자를 출력한다.
def display_lotto(count=6, end = 45): # count : parameter
lotto = []
while True:
random_number = random.randint(1, end)
lotto.append(random_number)
lotto = list(set(lotto))
if len(lotto) >= count:
break
lotto.sort()
print(lotto)
display_lotto() # 1 ~ 45까지 6개의 숫자
display_lotto(end=50, count=10) # 1 ~ 50까지 10개의 숫자 <- end와 count 위치 변경 가능
display_lotto(10, 50) <- 위치변경되면 안됨
▶ return
= 함수를 호출해서 결과 데이터를 변수에 저장할 때
= 함수의 코드를 중단할 때
- return이 있는 함수 예시 : str.upper
data = 'python'
result = data.upper()
print(data, result)
python PYTHON
- return이 없는 함수 예시 : list.sort()
data = [1,2,3]
result = data.sort()
print(data, result)
[1, 2, 3] None
- 여러 개의 데이터를 리턴
def calc(n1, n2):
result = [n1 + n2, n1 - n2]
return result
result = calc(3,1)
plus = result[0]
minus = result[1]
plus, minus
[4, 2]
=> 파이썬으로 작성 시 간단하게 작성가능
def calc(n1, n2):
return n1 + n2, n1 - n2
plus, minus = calc(3,1)
plus, minus
▶ 함수의 코드 실행 중단
def echo(msg, count=3):
for idx in range(count): # [0,1,2,3,4,5,6]
if idx >= 5:
return
print(msg)
print('Done')
echo('python', 7)
▶ docstring
- 함수의 설명을 작성 : 함수선언코드 바로 아래에 멀티라인 문자열로 작성
- help() 함수로 docstring 출력
def plus(n1, n2):
'''
This function is to plus two numbers.
parameters
----------
n1 : int, float : first number
n2 : int, float : second number
return
------
n1 + n2 : int, float
'''
return n1 + n2
- docstring 출력
plus + ctrl + spacebar
or
help(plus)
- docstring 참고 사이트 - pandas
pandas - Python Data Analysis Library
pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!
pandas.pydata.org
▶ *args, **kwargs
- argument의 갯수에 상관없이 함수를 실행하는 방법
- * args : 여러 개의 argument를 tuple 데이터 타입으로 받아줌
def plus(*args, **kwargs): # 파라미터에 컬렉션 데이터 타입을 받아줌 : 식별자1개, 데이터n개
print(type(args), args) # <- 키워드가 없는 아규먼트가 들어갔음
print(type(kwargs), kwargs) # <- 키워드가 있는 아규먼트가 들어갔음 ( *의 갯수가 중요함 순서가 바뀌어도됨)
# return n1 + n2
# 키워드 아규먼트는 키워드가 없는 아규먼트 뒤에 사용
# 디폴트 파라미터는 디폴트 값이 없는 파라미터 뒤에 사용
plus(1, 2, 3, 4, 5, n1=10, n2=30) # 여러개의 아규먼트
<class 'tuple'> (1,2,3,4,5)
<class 'dict'> {'n1': 10, 'n2': 30}
- args, **kwargs : argument에서 사용
- 파라미터 사용 : 여러 개의 아규먼트 -> 컬렉션 데이터 타입(tuple, dict)으로 묶어줌
- 아규먼트 사용 : 컬렉션 데이터타입(list, tuple, dict) -> 여러 개의 아규먼트로 풀어줌
def echo(*args, **kwargs):
print(type(args), args)
print(type(kwargs), kwargs)
data = [1, 2, 3]
echo(data) # echo([1, 2, 3]) -> 아규먼트 : 1개, 데이터 타입 : list
echo(*data) # echo(1, 2, 3) -> 아규먼트 : 3개, 데이터 타입 : 정수
<class 'tuple'> ([1, 2, 3],)
<class 'dict'> {}
<class 'tuple'> (1, 2, 3)
<class 'dict'> {}
▶ *args, **kwargs
- parameter
- 여러개의 아규먼트를 하나의 컬렉션 데이터타입(tuple,dict)으로 묶어서 받아준다.
- *args : 키워드가 없는 여러개의 아규먼트를 받음 -> tuple
- **kwargs : 키워드가 있는 여러개의 아규먼트를 받음 -> dict
- argument
- 묶여있는 컬렉션 데이터타입(list,tuple,dict) 을 여러개의 아규먼트로 풀어서 함수를 호출한다.
- *args : list, tuple 데이터타입의 데이터를 여러개의 키워드가 없는 아규먼트로 풀어줌
- **kwargs : dict 데이터타입의 데이터를 여러개의 키워드가 있는 아규먼트로 풀어줌
▶ 데이터베이스 접속 함수
def connect(**kwargs):
print('connect :', kwargs['host'], kwargs['user'], kwargs['pw'])
'TIL' 카테고리의 다른 글
[TIL] 8일차_PYTHON_Function_03 (0) | 2023.03.03 |
---|---|
[TIL] 8일차_PYTHON_Fuction_02 (0) | 2023.03.03 |
[TIL] 7일차_Conditional_probability (0) | 2023.03.03 |
[TIL] 7일차_python_operator_condition_loop_03 (0) | 2023.02.28 |
[TIL] 7일차_ python_operator_condition_loop _02 (0) | 2023.02.28 |