함수 만들기

함수를 사용한는 것을 프로그래밍에서는 '함수를 호출한다'라고 표현합니다.

함수를 호출할 때는 괄호 앞에 여러 가지 자료를 넣는데요.

이런 자료를 매개변수라고 합니다.

그리고 함수를 호출해서 최종적으로 나오는 결과값을 리턴값이라고 부릅니다.

 

def 함수 이름():

    문장

 

def print_n_times(value, n):
    for i in range(n):
        print(value)

print_n_times("안녕하세요", 5)
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요

 

이렇게 동작합니다.

 

매개변수와 관련된 TypeError 예외처리

함수를 생성할 때 매개변수를 만들었는데 함수를 호출할 때 매개변수를 넣지 않거나 더 많이 넣으면 어떻게 될까요?

이때 나는 에러가 TypeError입니다.


가변 매개변수는 함수 안에 매개변수를 원하는 만큼 받을 수 있는 함수를 뜻합니다.

def print_n_times(n, *values):
    for i in range(n):
        for value in values:
            print(value)
        print()

print_n_times(3, "안녕하세요", "즐거운", "파이썬 프로그램")

 

안녕하세요
즐거운
파이썬 프로그램

안녕하세요
즐거운
파이썬 프로그램

안녕하세요
즐거운
파이썬 프로그램

 

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

value가 바로 가변 매개변수입니다.

 

기본적인 함수의 활용

def 함수(매개변수):
    변수 =  초깃값
    # 여러 가지 처리
    # 여러 가지 처리
    # 여러 가지 처리
    return 변수

 

def sum_all(start=0, end=100, step=1):
    output = 0
    for i in range(start, end + 1, step):
        output += i
    return output

print("A.", sum_all(0, 100, 10)) # A. 550
print("B.", sum_all(end=100)) # B. 5050
print("C.", sum_all(end=100, step=2)) # C. 2550

 

함수의 활용

함수를 만드는 기본적인 방법을 알고 있어도 실제로 함수들이 어떻게 사용되는지 많이 접해 보지 않으면 제대로 활용할 수 없습니다. 이번 절에서는 함수를 활용하는 주요 패턴에 대해서 살펴보겠습니다.

 

재귀함수

 

반복문으로 팩토리얼 구하기

def factorial(n):
    output = 1
    for i in range(1, n + 1):
        output *= i
    return output

print("1!:", factorial(1))
print("2!:", factorial(2))
print("3!:", factorial(3))
print("4!:", factorial(4))
print("5!:", factorial(5))

 

재귀 함수를 사용해 팩토리얼 구하기

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

print("1!:", factorial(1))
print("2!:", factorial(2))
print("3!:", factorial(3))
print("4!:", factorial(4))
print("5!:", factorial(5))

 

함수 고급

튜플 : 함수와 함께 많이 사용되는 리스트와 비슷한 자료형으로 리스트와 다른 점은 한번 결정된 요소는 바꿀 수 없다는 것

[a, b] = [10, 20]
(c, d) = (10, 20)

print("a:", a) # a: 10
print("b:", b) # b: 20
print("c:", c) # c: 10
print("d:", d) # d: 20

 

람다 : 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고, 코드 공간 낭비라는 생각이 들 때 함수를 간단하고 쉽게 선언하는 방법

def call_10_times(func):
    for i in range(10):
        func()

def print_hello():
    print("안녕하세요")

call_10_times(print_hello)

 

 

파일처리

파일과 관련된 처리를 하는 함수는 표준 함수가 기본으로 제공됩니다.

파일은 크게 텍스트 파일과 바이너리 파일로 나뉘는데 여기서는 텍스트 파일과 관련된 내용만 살펴보겠습니다.

 

파일 객체 = open(문자열: 파일 경로, 문자열: 읽기 모드)

모드 설명
w write 모드(새로 쓰기 모드)
a append(뒤에 이어서 쓰기 모드)
r read(읽기 모드)

 

file = open("basic.txt", "w")
file.write("Hello Python Programming...!")

file.close()

 

with 키워드

with open("basic.txt", "w") as file:
    file.write("Hello Python Programming...!")

이렇게 코드를 작성하면 with 구문이 종료될 때 자동으로 파일이 닫힙니다.

따라서 파일을 열고 닫지 않는 실수를 줄일 수 있습니다.

 

 

텍스트 읽기

파일 객체.read()

with open("basic.txt", "r") as file:
    contents = file.read()
print(contents)
import random
hanguls = list("가나다라마바사아자차카타파하")
    
with open("info.txt", "w") as file:
    for i in range(1000):
        name = random.choice(hanguls) + random.choice(hanguls)
        weight = random.randrange(40, 100)
        height = random.randrange(140, 200)

        file.write("{}, {}, {}\n".format(name, weight, height))

'혼공파' 카테고리의 다른 글

혼공파 7장 모듈(1)  (0) 2024.02.04
혼공파 5주 예외처리 6장  (0) 2024.02.04
혼공파 3주차 Ch04 반복문  (1) 2024.01.21
혼공파 ch3 조건문  (1) 2024.01.15
혼공파 ch2 자료형  (0) 2024.01.14

+ Recent posts