본문 바로가기
제로베이스 데이터 스쿨/일일 스터디 노트

5일차 스터디노트 / 파이썬 함수, 모듈, 패키지 / 제로베이스 데이터 취업스쿨

by 김뎀뎀 2023. 1. 8.

📗 5일차 공부 내용 요약

[ 파이썬 ]

1. 함수 : 함수의 개념과 선언 및 호출 방법, 인수와 매개변수, 데이터반환, 중첩함수, lambda함수에 대해 배웠다.

2. 변수 : 모듈의 개념, 모듈 제작 및 사용 방법, 실행파일에 대해 배웟다

3. 패키지 : 패키지의 개념과 생성 방법에 대해 배웠다

 


📖  5일차 공부 내용 자세히

1. 함수

■ 함수의 개념

  • 함수는 '기능'이라고 생각하자
  • 파이썬의 함수는 수학의 함수와 동일하다고 생각하면 되는데, input을 넣으면 output이 나온다
  • 파이썬에서 기본적으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다
  • 함수는 특정 기능을 재사용하기 위해서 사용한다

 

■ 함수의 선언과 호출

def 함수명( ) :
      실행문 
  • def 키워드, 함수명 , : , 들여쓰기를 이용해서 선언한다
  • 함수 호출 시에는 함수명( )을 쓰면 된다
  • 함수 내에서 또 다른 함수를 호출할 수 있다
  • pass를 이용해서 실행문을 생략할 수 있다.
#오늘 날씨를 출력하는 함수를 선언하고 3번 호출해보자

def todayWether():
    print('오늘 날씨는 맑습니다. 기온은 25도입니다.')

todayWether()
todayWether()
todayWether()

#함수 내에 또 다른 함수 호출

def fun1():
    print('fun1 호출!')
    fun2()

def fun2():
    print('fun2 호출!')
    fun3()

def fun3():
    print('fun3 호출!')

fun1()

'''
fun1 호출!
fun2 호출!
fun3 호출!

 

■ 인수와 매개 변수

def greet(customer) :
	print(f'{customer} 고객님 안녕하세요.')
  
greet('홍길동')
  • 위 코드에서 customer은 매개변수, 홍길동이 인수이다
  • 인수와 매개변수의 개수는 일치해야 한다
  • 매개 변수 개수가 정해지지 않은 경우 *을 이용한다
def printNumber(*numbers) :
    for number in numbers : #numbers에 들어온 인수의 개수만큼 반복
        print(number, end='')
    print()

printNumber()
printNumber(1)
printNumber(1,2)
printNumber(1,2,3)

'''
1
12
123
'''

💡 위 예제를 작성하면서, 기존에 for문은 range와 함께 사용하는 법 밖에 안배워서 for문의 기본 구조에 대해 알아보고 기록해보았다.

 

[파이썬] for문 / 기본 구조

📌 for문의 기본구조 for 변수 in 리스트(또는 튜플,문자열): 실행문 리스트(또는 튜플, 문자열)의 첫번재 요소부터 마지막 요소까지 차례로 변수에 대입되면서 실행문이 수행된다 odd = [ 1, 3, 5, 7, 9

kim-dem-dem.tistory.com

■ 데이터 반환

  • return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다
  • 함수가 return을 만나면 실행을 종료한다
#사용자가 길이(cm)를 입력하면 mm로 환산한 값을 반환하는 함수를 만들어보자

def cmToMm(cm):
    mm = cm * 10
    return mm

lenth = float(input('길이(cm) 입력 :'))
returnVlue = cmToMm(lenth)
print(f'returnValue : {returnVlue}mm')

 

■ 지역변수와 전역변수

  • 전역변수 : 함수 밖에서 선언된 변수로 어디서나 사용 가능하지만 함수 안에서 수정할 수 없다
  • 지역변수 : 함수 안에 선언된 변수로 함수 안에서만 사용가능하다
  • global 키워드 : 함수 안에서 전역변수의 값을 수정할 수 있다
#방문객 수를 카운트하는 함수를 만들어보자

totalVisit = 0

def countTotalVisit():
    global totalVisit

    totalVisit = totalVisit + 1
    print(f'누적 방문객 : {totalVisit}')

countTotalVisit() #실행한 순간 totalVisit의 데이터가 1로 바뀜
countTotalVisit() #실행한 순간 totalVisit의 데이터가 2로 바뀜
countTotalVisit() #실행한 순간 totalVisit의 데이터가 3로 바뀜
countTotalVisit() #실행한 순간 totalVisit의 데이터가 4로 바뀜
countTotalVisit() #실행한 순간 totalVisit의 데이터가 5로 바뀜

'''
누적 방문객 : 1
누적 방문객 : 2
누적 방문객 : 3
누적 방문객 : 4
누적 방문객 : 5
'''

 

■ 중첩함수

  • 중첩함수는 함수 안에 또 다른 함수가 있는 형태이다
  • 중첩함수 내부 함수를 함수 밖에서 호출할 수 없다
#calculator()함수를 선언하고 calculator()안에 덧셈,뺄셈,곱셈,나눗셈 함수를 선언하자

def calculator(n1,n2,operator):

    def addCal():
        print(f'덧셈 연산 : {n1+2}')

    def subCal():
        print(f'뺄셈 연산 : {n1-n2}')

    def mulCal():
        print(f'곱셈 연산 : {n1+n2}')

    def divCal():
         print(f'나눗셈 연산 :{n1/n2}')

    if operator == 1:
        addCal() #호출해 줘야 실행된다, 선언만해서는 실행되지 않느다
    elif operator == 2:
        subCal()
    elif operator == 3:
        mulCal()
    elif operator == 4:
        divCal()

while True :
    num1 = float(input('실수(n1) 입력 : '))
    num2 = float(input('실수(n2) 입력 : '))
    operatorNUm = int(input('1.덧셈  2.뺄셈  3.곱셈  4.나눗셈  5.종료'))

    if operatorNUm == 5:
        print('종료')
        break

    calculator(num1,num2,operatorNUm)

'''
실수(n1) 입력 : 4
실수(n2) 입력 : 5
1.덧셈  2.뺄셈  3.곱셈  4.나눗셈  5.종료1
덧셈 연산 : 6.0
실수(n1) 입력 : 56
실수(n2) 입력 : 4
1.덧셈  2.뺄셈  3.곱셈  4.나눗셈  5.종료3
곱셈 연산 : 60.0
실수(n1) 입력 : 5
실수(n2) 입력 : 6
1.덧셈  2.뺄셈  3.곱셈  4.나눗셈  5.종료5
종료

Process finished with exit code 0
'''

■ lambda 함수

함수 = lambda 매개변수 : 리턴값
  • lambda함수를 이용하면 함수 선언을 보다 간단하게 할 수 있다
# 삼각형, 사각형, 원의 넓이를 반환하는 lamda함수를 만들어보자

getTriArea = lambda n1,n2 : n1*n2/2
getSquArea = lambda n1,n2 : n1*n2
getCirArea = lambda n : n*n*3.14

width = int(input('가로 길이 입력 : '))
height = int(input('세로 길이 입력 : '))
radius = int(input('반지름 길이 입력 : '))

triValue = getTriArea(width,height)
squValue = getSquArea(width,height)
cirValue = getCirArea(radius)

print(f'삼각형 넓이 : {triValue}')
print(f'사각형 넓이 : {squValue}')
print(f'원 넓이 : {cirValue}')

'''
가로 길이 입력 : 20
세로 길이 입력 : 30
반지름 길이 입력 : 6
삼각형 넓이 : 300.0
사각형 넓이 : 600
원 넓이 : 113.04
'''

 

2. 모듈

■ 모듈이란

  • 모듈은 이미 만들어진 기능으로 사용자가 쉽게 사용할 수 있다
  • 내부 모듈, 외부 모듈, 사용자 모듈로 구분할 수 있다
#random 모듈을 이용해서 1부터 10까지의 정수 중 난수 1개를 발생시켜보자
import random

rNUm = random.randint(1,10)
print(f'rNUm = {rNUm}')
#rNUm = 7

■ 모듈 제작

  • 모듈은 특정 기능을 가지고 있는 파이썬 파일을 말하므로, 파이썬 파일을 생성해 만들면된다
#로또 번호 (6개)를 출력하는 모듈을 만들어보자.

#모듈파일
import random

def getLottoNumbers():
    result  = random.sample(range(1,46),6)
    
    return result

#실행파일
import lotto

lottoNumbers = lotto.getLottoNumbers()
print(f'lottoNUmbers : {lottoNumbers}')

'''
lottoNUmbers : [37, 41, 3, 2, 42, 12]
'''

 

■ 모듈 사용

import 모듈명
  • 원하는 모듈을 임포트 한다
import 모듈명 as 단축하고 싶은 이름
  • as 키워드를 통해 모듈 이름을 단축한다
from 모듈명 import 함수
  • 모듈의 특정 기능만 사용할 수 있다

 

#국어, 영어, 수학 점수를 입력하면 총점, 평균을 출력하는 모듈을 만들어보자

#모듈
scores = []

def addScore(s):
    scores.append(s)

def getScores():
    return scores

def getTotalScore():
    total = 0
    for s in scores:
        total += s
    return total

def getAvgScore():
    avg = getTotalScore()/len(scores)
    return avg

#실행
import score as s

korScore = int(input('국어 점수 입력 : '))
ingScore = int(input('수학 점수 입력 : '))
matScore = int(input('영어 점수 입력 : '))

s.addScore(korScore)
s.addScore(ingScore)
s.addScore(matScore)

print(s.getScores())
print(s.getTotalScore())
print(s.getAvgScore())

💡 위 예제를 작성하면서, list 자료형에 대해 아직 학습하지 않아 따로 찾아 기록해보았다

 

[파이썬] list 자료형 / 리스트 자료형 개념, 리스트 인덱싱, 리스트 길이 구하기, 리스트 요소 추

📌 List 자료형 리스트명 = [ 요소1, 요소2, 요소3, ... ] 리스트를 만들 때 대괄호로 감싸주고, 쉼표로 요솟값을 구분해주면 된다. #비어있는 리스트 생성 a = list() a = [] #리스트 예시 odd = [ 1, 3, 5, 7, 9

kim-dem-dem.tistory.com

 

■ 실행(메인)파일

  • __name__에 실행되면 __main__이 아니면, 모듈명이 저장된다

 

3. 패키지

  • 패키지를 이용하면 관련있는 모듈을 그룹으로 관리할 수 있다
  • site-packages에 있는 모듈은 어디서나 사용할 수 있다

 


➰ 5일차 후기

함수, 모듈을 학습하며 기존에 배웠던 파이썬의 문법들을 활용하며 작성할 수 있었는데,

기존 학습 내용에서 다루지 않은 것들이 약간 있어서 직접 검색을 하며 이해하기도 해보았다.

벌써(?) 공부 1주차가 마무리 되었다, 다음주도 이어지는 파이썬 공부 잘해봐야겠다 ~


※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.