파이썬 중급 02

eun·2023년 9월 28일

함수란?

  • 함수란 어떠한 input에 대해 특정 연산을 하여 결과를 output으로 출력하는 것이다.
  • 함수는 특정 기능을 재사용하기 위해 사용한다.

함수의 선언

def addCal(): # 함수 선언
    n1 = int(input('n1 입력: '))
    n2 = int(input('n2 입력: '))
    print(f'n1 + n2 = {n1 + n2}')

addCal() # 함수 호출
  • 내장함수 : 파이썬에서 기본으로 제공
  • 사용자 함수 : 사용자가 직접 선언

함수에서 또 다른 함수 호출하기

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

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

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

fun1()

인수와 매개변수

  • 함수 호출 시 함수에 데이터를 전달할 수 있다.
  • 인수와 매개변수 개수는 일치해야 한다.
def greet(customer): # 매개변수
    print('{}님, 안녕하세요'.format(customer))

greet('홍길동') # 인수
  • 매개변수 개수가 정해지지 않은 경우 '*'를 이용한다.
def printNum(*numbers):
    # print(type(numbers)) -> 튜플 타입
    for number in numbers:
        print(number, end=' ')
    print()

printNum()
printNum(10)
printNum(10, 20)
printNum(10, 20, 30)
  • return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.
  • 함수가 return을 만나면 실행을 종료한다.
def divideNumber(n):
    if n % 2 == 0:
        return '짝수'
    else:
        return '홀수'

returnValue = divideNumber(4)
print(f'returnValue : {returnValue}')

변수의 종류

  • 전역 변수 : 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.
num_out = 10
def printNum1():
    print(f'num_out1 : {num_out}')

printNum1()
print(f'num_out1 : {num_out}')

def printNum2():
    num_out = 20
    print(f'num_out2 : {num_out}')

printNum2()
print(f'num_out2 : {num_out}')
  • 지역 변수 : 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.
    global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.
def printNum3():
    global num_out
    num_out = 30
    print(f'num_out3 : {num_out}')

printNum3()
print(f'num_out3 : {num_out}')

중첩함수란?

  • 중첩함수란 함수 안에 또 다른 함수가 있는 형태이다.
  • 내부함수는 함수 밖에서 호출할 수 없다.

lambda 키워드

  • lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다.
def calculator(n1, n2):
    return n1 + n2

returnValue = calculator(10, 20)
print(returnValue)

calculator2 = lambda n1, n2: n1 + n2
returnValue2 = calculator2(10, 20)
print(returnValue2)

모듈이란?

  • 모듈이란 이미 만들어진 훌륭한 기능으로 사용자는 쉽게 사용 가능할 수 있도록 하는 것이다.

모듈 종류

  • 내부 모듈 : 파이썬 설치 시 기본적으로 사용할 수 있는 모듈
  • 외부 모듈 : 별도 설치 후 사용할 수 있는 모듈
  • 사용자 모듈 : 사용자가 직접 만든 모듈
import random

for i in range(10):
    rNum = random.randint(1, 10)
    print(f'rNum: {rNum}')

print()

rNums = random.sample(range(1, 101), 10)
print(f'rNums: {rNums}') # 리스트로 반환

실행 파일

  • 전역변수 name 을 이용한 실행파일을 지정한다.
  • 만약 addMoulde.py 라는 파일이 있다면 name = 'addModule' 이라는 파일 이름이 저장된다.
  • 위와 같은 모듈을 실행하는 실제 실행파일에는 name = 'main' 이 저장된다.

패키지란?

  • 패키지란 관련 있는 모듈을 그룹으로 관리 가능하도록 한다.
  • site-packages에 있는 모듈은 어디서나 사용할 수 있다.

객체지향 프로그래밍

  • 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.
  • 객체는 클래스에서 생성된다.
  • 객체 사용의 장점 : 코드 재사용, 모듈화에 좋다. -> 이상적인 프로그램이 될 수 있음

클래스 만들기

  • 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
class Car:
    def __init__(self, color, length):
        self.color = color
        self.length = length

    def doStop(self):
        print('STOP!')

    def doStart(self):
        print('START!')

    def printCarInfo(self):
        print(f'self.color : {self.color}')
        print(f'self.length : {self.length}')

객체 생성

  • 객체는 클래스의 생성자를 호출한다.
car1 = Car('red', 200)
car2 = Car('blue', 300)

car1.printCarInfo()
car2.printCarInfo()

객체 속성 변경

  • 객체 속성은 변경할 수 있다.
class NewGenerationPC:

    def __init__(self, name, cpu, memory, ssd):
        self.name = name
        self.cpu = cpu
        self.memory = memory
        self.ssd = ssd

    def doExcel(self):
        print('EXCEL RUN!')

    def doPhotoshop(self):
        print('PHOTOSHOP RUN!!')

    def printPCInfo(self):
        print(f'self.name : {self.name}')
        print(f'self.cpu : {self.cpu}')
        print(f'self.memory : {self.memory}')
        print(f'self.ssd : {self.ssd}')

myPC = NewGenerationPC('mypc', 'i5', '16G', '256G')
myPC.printPCInfo()

friendPC = NewGenerationPC('friendPC', 'i7', '32G', '512G')
friendPC.printPCInfo()

myPC.cpu = 'i9'
myPC.memory = '64G'
myPC.ssd = '1T'
myPC.printPCInfo()

0개의 댓글