Welcome! Everything is fine.

[혼공단 4주차] 혼자 공부하는 파이썬 Chapter 05 본문

자격증 및 기타 활동/한빛미디어 혼공단

[혼공단 4주차] 혼자 공부하는 파이썬 Chapter 05

개발곰발 2021. 8. 1.
728x90

💡 용어 정리

함수 : 식별자 뒤에 괄호가 붙어있는 것

매개변수 : 괄호 내부에 넣는 여러가지 자료

리턴값 : 함수를 호출해서 최종적으로 나오는 결과

가변 매개변수 : 매개변수를 원하는 만큼 받을 수 있는 함수

기본 매개변수 : 기본값을 지정할 수 있는 매개변수, 매개변수를 입력하지 않았을 경우 들어가는 기본값

키워드 매개변수 : 이름을 지정해서 입력하는 매개변수

💡 함수

# 함수 선언
def 함수이름():
	문장

# 함수 호출
함수이름()

함수를 만들 때 매개변수를 만들었는데 함수를 호출 할 때 매개변수를 넣지 않거나 더 많이 넣으면 TypeError가 발생한다. 매개변수와 가변 매개변수, 기본 매개변수에 대한 설명은 선택미션도 수행할 겸 Notion 에 정리해보았다.

키워드 매개변수

키워드 매개변수란 이름을 직접적으로 지정해서 입력하는 매개변수를 말한다. 다음과 같이 가변 매개변수가 기본 매개변수보다 앞에 올 경우, ["안녕", "혼자 공부하는", "파이썬", 3] 을 2번 출력한다. 가변 매개변수와 기본 매개변수를 함께 사용하고 싶다면 키워드 매개변수를 통해 해결 할 수 있다.

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

print_n_times("안녕", "혼자 공부하는", "파이썬", 3)

 

다음은 키워드 매개변수를 사용한 코드다.

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

print_n_times("안녕", "혼자 공부하는", "파이썬", n=3)

리턴

함수 내에서는 return이라는 키워드를 사용할 수 있는데, '함수를 실행했던 위치로 돌아가라'는 뜻이다. return 뒤에 자료를 입력하면 그 자료를 가지고 돌아간다. 만약 아무것도 리턴하지 않았을 경우에는 None을 출력한다. 흐름 중간에 return 키워드를 사용하는 것조기 리턴이라고 부른다. 

재귀 함수

'재귀'란 자기 자신을 호출하는 것을 말한다. 책에서는 팩토리얼과 피보나치 수열을 이용하여 설명했지만 나는 팩토리얼을 이용한 예시만 간단히 적어두었다. 다음은 재귀 함수를 이용해 팩토리얼을 구하는 코드다. return 키워드를 이용하여 n이 0이라면 1을 리턴하고, n이 0이 아니라면 n * factorial(n-1)을 리턴하는 함수를 만들었다.

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))

재귀 함수를 잘 이용하면 코드가 간결해져 읽기 쉬워지지만, 같은 것을 기하급수적으로 반복할 수도 있다는 문제가 있다. 한번 계산한 값이라도 또 계산해야 하는 문제를 해결하기 위해서는 딕셔너리를 사용하여 한 번 계산한 값을 저장해야한다. 이처럼 한 번 계산한 값을 저장해 놓은 후, 이후에 다시 계산하지 않고 저장된 값을 활용하는 것을 메모화라고 한다.

튜플

튜플은 리스트와 비슷한 자료형이지만 한번 결정된 요소를 바꿀 수 없는 불변적인 특징을 가진다. 튜플은 다음과 같은 구조다. 괄호로 데이터를 묶어 표현하고, 만약 요소를 하나만 가지는 튜플을 표현하고 싶다면 쉼표를 넣어주어야 한다.

# tuple 기본적인 형태
tuple = (데이터, 데이터, 데이터, ...)

# 요소를 하나만 가지는 tuple
tuple = (데이터, )

그러나 괄호를 생략해도 튜플로 인식 할 수 있는 경우에는 괄호를 생략해도 된다. 이를 이용하면 아래 예시와 같이 편리하게 값을 교환할 수도 있다. 이것은 튜플로만 할 수 있는 일이기도 하다.

a, b = 10, 20

# 값 교환
a , b = b, a

람다

람다를 이용하면 함수를 간단하고 쉽게 작성할 수 있다. 주의할 점은 람다 표현식 안에서는 새 변수를 만들 수 없다는 점이다.  def로 함수를 작성하는 것이 좋습니다. 변수가 필요하다면 def 함수로 적는 것이 좋다. 람다 형식의 구조는 다음과 같다.

lamda 매개변수:리턴값

구글에서 간단한 예제를 가져왔다. 다음은 두 수의 합을 구하는 예제이다.

def hap(x, y):
	return x + y

print(hap(10, 20))

위 코드를 람다 형식으로 표현한다면 아래와 같이 한 줄로 쓸 수 있다.

print((lambda x,y:x+y)(10,20))

파일처리

파이썬에서는 표준 함수로 파일과 관련된 처리를 하는 함수가 제공된다. 파일은 크게 두 가지로 나뉜다. Chapter 05에서는 텍스트 파일에 대해서만 배웠다.

  • 텍스트 파일
  • 바이너리 파일

✔ 파일 열기 : open()

파일을 열 때는 open() 함수를 사용한다.

파일 객체 = open("test.txt", "w")

첫 번째 매개변수에는 파일 경로를 입력하고, 두 번째 매개변수에는 모드를 지정한다. 위 코드에서는 write 모드로 지정한 것이다. 모드의 종류는 다음과 같다.

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

✔ 파일 닫기 : close()

파일 객체.close()

아래는 파일을 열고, 텍스트를 쓴 후 닫는 간단한 코드다. 프로그램을 실행하면 test.txt 라는 파일이 생성된 것을 볼 수 있다.

file = open("test.txt", "w")
file.write("Hello Python!")
file.close()

✔ with 키워드

with 구문은 블록을 벗어날 때 close() 함수를 자동으로 호출해 파일을 닫지 않는 실수를 줄인다. 다음과 같은 형태로 작성한다.

with open("test.txt, "w") as 파일 객체:
	문장

✔ 파일 읽기 : read()

파일을 쓸 때는 write() 함수를 사용하고, 파일을 읽을 때는 read() 함수를 사용한다.

파일 객체.read()

✅ 기본 미션

✅ 선택 미션

 

[Python] 혼공파 4주차 선택미션

매개변수, 기본 매개변수, 가변 매개변수

outgoing-handball-a48.notion.site

 

✍🏻 7월 피드백

뒤로 갈수록 잊고 있던 내용과 몰랐던 내용이 혼재되어 점점 혼란스러워지기 시작했다. 복습을 정말 열심히 해야겠다는 생각이 들었다. 나름 긍정적으로 바라본 7월의 Done List는 다음과 같다.

 

✔ 개인 스터디와 혼공단 활동으로 Python의 기본적인 내용을 복습하고 기술 블로그를 처음 개설했다.(내일 되면 또 까먹지만..)

✔ 초급 자바 스터디를 통해 Java의 기본적인 문법을 배우고 처음으로 Github에 파일을 올려보았다. 

✔ Html/css를 맛보기 했다.(Python과 Java에 휩쓸려 정말 맛보기만..)

 알바도 열심히 하고 주 2회 이상은 운동을 했다.

✔ 일상 블로그도 종종 업로드 했다.

 

...썩 만족스럽진 않다.

잠시 무기력했던 나의 모습을 반성하면서 8월은 더 열심히 보내야겠다. 남은 방학을 더 유의미하게 보낼수 있도록 노력하자!