[데이터사이언스 12기-스터디노트]파이썬(23.02.05)

도윤수·2023년 2월 5일
0

Python스터디노트

목록 보기
4/16
post-thumbnail

스터디노트 4일차 범위

파이썬 중급 4(인수와 매개변수) ~ 9(모듈)

📖 파이썬 중급 4(인수와 매개변수)

이전에 def 키워드를 활용하여 함수를 선언할 수 있었다.

‣ 함수의 호출부에서 데이터 값을 전달할 수 있다.
‣ 함수 선언부의 매개변수 ★ def greet(country) ⇨ country가 매개변수
‣ 함수 호출부의 인수 ★ greet(Korea) ⇨ korea가 인수
‣ 인수와 매개변수는 쌍을 이루어야 한다.

함수를 좀 더 효율적으로 보다 많은 곳에 사용할 수 있어졌다.
하지만, 참가자 100명 중 생존한 n명의 번호를 나열하라! 처럼 매개변수가 정해져 있지 않을 수 있다.
그럴 땐 매개변수를 튜플로 만들어버려서 가변적으로 활용할 수 있는 방법이 있다.

def printNum(*numbers):
    for number in numbers:
        print(number, end=' ')
    print()

printNum()
printNum(1)
printNum(1, 2, 3)
printNum(1, 2, 3, 4, 5)

매개변수를 매번 인수와 맞춰주지 않아도 있으면 있는만큼 없으면 없는만큼 아래의 결과처럼 맞춰서 출력할 수 있다.

빈칸
1
1 2 3
1 2 3 4 5

📖 파이썬 중급 5(데이터 반환)

함수 실행결과를 호출부로 돌려줄수 있다! (with return)

def calculator(n1, n2):
	result = n1 + n2 
    
    return result
    
returnValue = calculator(10, 20)
print(f'returnValue: {returnValue / 2}')

여기는 조금 헷갈릴 수 있다. 코드 작성하기 전 천천히 머리속으로든 메모를하든 정리해두고 가지않으면 꼬일 것 같은 부분이다...

  1. calculator라는 함수는 n1과 n2를 매개변수로 받는 함수이다.
  2. result에 n1 + n2 값을 담겠다.
  3. result값을 return으로 호출부에 반환을 하겠다.
  4. 반환된 값을 returnvalue에 담겠다.
  5. 매개변수의 인수로 10, 20 을 주겠다.
    ‣ 이 부분이 헷갈릴 수 있는데, returnValue엔 result 값인 30이 들어오고 뒤에 있는 calculator 부분은 원래의 목적 그대로 10, 20 을 선언부로 던져주는 것이다.
  6. 이렇게 반환받은 데이터는 추가 가공이 가능해진다.

내 기준 헷갈릴 수 있는 부분은 returnValue = calculator(10, 20) 이 부분인데, 반복해서 이해는 갔으니 계속 눈에 익혀서 익숙해지는 방법뿐이 없을 것 같다.

📖 파이썬 중급 6(지역 변수와 전역 변수)

함수 내에서만 사용할 수 있는 변수가 있다! (with global 키워드)

#지역 변수 구분법
def printNumber():
    num_in = 20
    print(f'num_in: {num_in}')

printNumber()                ------------- ①
print(f'num_in: {num_in}')   ------------- ②

① 까지만 입력했을 땐 정상적으로 num_in: 20이 출력된다.
‣ printNumber 라는 함수의 결과를 출력한 것이기 때문에.
① 이 없고 ② 를 입력한다면 error가 난다. num_in은 printNumber() 함수 안에서만 사용되는 지역 변수이기 때문에 print를 한다면 선언되지 않은 변수를 출력하려하는 것이기 때문이다.
만약 def 밖에 num_in 을 선언하고 초기화 해주었다면, 전역 변수로서의 num_in을 출력할 수 있다.

아래의 예제에서 width와 height는 전역 변수로서 함수 안에서 얼마든지 활용은 가능하다.

#지역 변수활용 예제
def printArea():
    triangleArea = width * height / 2
    squareArea = width * height

    print(f'삼각형의 넓이는? {triangleArea}')
    print(f'사각형의 넓이는? {squareArea}')
width = int(input('가로의 길이를 입력하시오: ')) #width, height는 전역변수
height = int(input('세로의 길이를 입력하시오: '))
printArea()

📖 파이썬 중급 7(지역 변수와 전역 변수)

함수 속 또 다른 함수! (with calculator)

3에서 배웠던 함수 내 다른 함수 호출과 비슷하다.
ex) 구구단 2단 함수 안에 3단 호출 함수같이
하지만 함수 안에 또 다른 함수를 선언하는 것이기 때문에 완전 다르다.
전역 변수, 지역 변수처럼 내부 함수를 밖에서 따로 호출할 수는 없다.

def out_fun():
	print('out_fun called')
    
    def in_fun():
    print('in_fun called')
    
    in_fun() ------------- ①
 in_fun() ------------- ②

‣ ① 은 함수안에서 선언되고 함수 안에서 호출된거라 가능
‣ ② 는 함수 밖에서 내부 함수만 따로 호출한거라 불가능

예제가 어려워졌다... 코드 조금 길어지니깐 정신 차리기 힘든상황...

#중첩함수 예제 계산기
def calculator(n1, n2, operator):

    def addCal():
        print(f'덧셈 연산: {round(n1 + n2, 1)}')

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

    def mulCal():
        print(f'곱셈 연산: {round(n1 * n2, 3)}')

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

    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('Bye')
        break

    calculator(num1, num2, operatorNum)
  1. 매개변수 3개를 갖는 calculator 함수안에 add, sub, multiple, divide 를 선언
  2. 기능 선택에서 입력을 받고 각 입력 값 별로 기능을 실행할 수 있는 조건문
  3. 계속해서 돌아갈 수 있ㄱㅔ While 문을 넣어주고 입력 값들을 받는다.

while 문과 if 문이 헷갈리는데 이 부분은 문제를 많이 풀며 익혀야겠다...

📖 파이썬 중급 8(lambda 함수)

간단한 기능의 함수를 간단하게! (with calculator)

기존에 사용했던 함수들은 def 부터 기능까지 상세하게 적었다면,
간단한 기능의 함수들은 lambda를 활용하여 간단하게 선언가능!

#lamda함수 예제
def calculator(n1, n2):
    return n1 + n2

returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')

calculator2 = lambda n1, n2: n1 + n2
returnValue2 = calculator2(10, 20)
print(f'returnValue2: {returnValue2}')

calculator 함수는 기존에 배웠던 방식으로 선언하고 호출하는 방법이고,
calculator2 함수는 lambda를 활용해서 매개변수와 기능을 바로 선언해버리기 때문에
코드가 5줄에서 ⇨ 3줄이 되는 기적이 일어난다.

#한번의 입력으로 여러 값을 받아보는 lambda 활용법
getTriangleValue = lambda n1, n2: n1 * n2 / 2
getSquareValue = lambda n1, n2: n1 * n2
getCircleValue = lambda n1 : n1 * n1 * 3.14

width = int(input('가로(반지름) 길이를 입력하시오.'))
height = int(input('세로 길이를 입력하시오.'))

getTriangle = getTriangleValue(width, height)
getSquare = getSquareValue(width, height)
getCircle = getCircleValue(width)

print(f'삼각형의 넓이: {getTriangle}')
print(f'사각형의 넓이: {getSquare}')
print(f'원의 넓이: {getCircle}')

def 를 사용했다면 엄청 길어졌을 코드가 lambda를 활용함으로써 깔끔하게 덩어리지고 간결해졌다.

📖 파이썬 중급 9(모듈)

함수가 선언되어 있는 파이썬 파일

모듈이란? 내부 모듈, 외부 모듈, 사용자 모듈로 크게 나눌 수 있다.
내부 모듈 : 파이썬 설치하면 기본적으로 사용 가능한 모듈
외부 모듈 : 별도로 설치해서 사용하는 모듈
사용자 모듈 : 사용자가 직접 만들어 사용하는 모듈
조립식 컴퓨터에 부분 부분 좋은 부품으로 교체해서 업그레이드를 시킨다 생각하면 각 부품은 모듈이 된다.

🔥🔥 바쁜시간 쪼개서 매일매일 성장해 나가는 모습을 기록하자! 🔥🔥

profile
DataScience를 하고 싶은 DoIT

0개의 댓글