[오늘코딩] 파이썬 조건문, 함수

연군·2022년 9월 21일
0

Python ControlFlow

파이썬 복습에 해당하는 파트로, 새롭게 알게 되거나 헷갈린 점만 정리한다.

1. PEP 8

Pythonic

파이써닉이란, "파이썬" 답게 코드를 짜는 것을 말한다. 그렇다면 파이썬 다운 코드란 무엇일까? Zen of Python의 내용처럼, 가독성이 좋은 아름다운 코드를 말할 것이다.

이러한 파이썬다운 코드를 작성하는 가이드가 바로 Coding Covention PEP 8이다.
https://peps.python.org/pep-0008/

주요 내용은 다음과 같다.

  • 들여쓰기는 4개의 공백을 사용한다
  • 한 줄의 최대 길이는 79자 이내로 작성한다.
  • ...

한글 번역본은 https://wikidocs.net/7896에서 살펴보자


2. enumerate 함수

파이썬에서 iterable한 자료구조를 for문으로 순회할 때 range와 enumerate 함수를 사용한다. 그러나 range 함수를 사용할 때는 len 함수와 같이 사용해야 한다. range는 정수 범위를 지정하여 반복할 수 있지만, list 등의 자료구조에서는 len을 이용해 정수를 입력해야 하기 때문이다.

colors = ['red', 'blue', 'green']
for idx in range(len(colors)):
	...

위의 코드는 자료구조의 인덱스를 이용해 원소에 접근한다.
그러나 enumerate 함수는 인덱스와 원소를 동시에 접근할 수 있는, 보다 파이써닉한 방법을 제공해준다.

colors = ['red', 'blue', 'green']
for idx, color in enumerate(colors):
	print(f"{idx} : {color}")
0 : red
1 : blue
2 : green

3. 함수에 대해서

파이썬에서 함수는 다양하다. 사용자가 직접 정의할 수도 있고, 파이썬 자체 내장함수, 라이브러리나 모듈에서 호출된 함수들 등 폭넓게 존재한다. 이 모든걸 보았을 때, 함수의 정의는 특정한 작업의 단순화 정도 되지 않을까 싶다.

1) 함수의 구조

함수를 구조는 다음과 같다.

def fuction(parameters):
	...
    return ...

2) parameter와 argument

함수는 parameter를 입력 받아 작동하거나, 그 자체로 작동할 수 있다. 이때 우리가 입력한 parameter를 argument라고 부른다. parameter와 argument의 정의를 정리하면 다음과 같다.

아래 코드에서 x와 y가 parameter에 해당된다.

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

3) parameter의 전달방법

일반적으로 함수를 작동시킬 때 parameter의 값을 정의해준다. 가령 위의 add 함수는 2개의 parameter를 가지므로 2개의 argument를 넣어줘야 한다. 그러나 parameter의 개수는 정의된 함수에 따라 다르며, 몇개의 parameter를 정의할지 모른다면? 매번 parameter의 개수를 찾는 건 불편하다. 또한 혹자는 parameter의 변수를 직접 할당하려고 한다면, 어떻게 해야 하는가?

파이썬에서는 이러한 불편함을 해결하기 위한 방법이 존재한다. 아래와 같은 경우는 어떻게 문제를 해결했는지 살펴보자.

  • parameter의 기본값을 설정하는 경우
  • parameter의 변수를 직접 설정하는 경우
  • parameter의 개수가 바뀌는 경우
  • parameter의 개수가 바뀌고, 변수를 설정하는 경우
  • parameter의 기본값을 설정하고, 개수가 바뀌고, 변수를 설정하는 경우

parameter의 기본값을 설정하는 경우

아래 함수는 add() 함수의 세 번째 parmeter의 default 값을 100으로 지정하는 예시이다.

def add(x, y, z = 100):
	return x + y

add 함수를 적용했을 때, res_1과 res_2에는 세 번째 parameter인 z를 정의해주지 않았기 때문에 default값인 100이 계산된다. 즉, 두 변수의 값은 동일하다.

한편 res_3은 세 가지의 parameter를 모두 정의했기에 130이라는 별개의 값이 할당된다.

res_1 = add(10, 50)          # res_1 = 10 + 50 + 100
res_2 = add(10, 50,)         # res_2 = 10 + 50 + 100
res_3 = add(10, 50, 70)      # res_2 = 10 + 50 + 70

parameter의 변수를 직접 설정하는 경우

아래 함수는 세 가지의 parameter의 default 값이 설정된 add함수다.

def add(x = 100, y = 300, z = 500):
	return x + y + z

parameter의 이름을 정확히 안다면, 순서와 무관하게 변수명을 직접 정의하여도 작동한다.

print(add(z = 10))               # 410
print(add(z = 50, y = 30))       # 180
print(add(y = 1, x = 0, z = -1)  # 0 

나머지는 아래의 블로그를 참고하자

https://blog.naver.com/PostView.naver?blogId=youndok&logNo=222072022622&categoryNo=39&parentCategoryNo=0&viewDate=¤tPage=2&postListTopCurrentPage=&from=postList

컴프리핸션

따로 정리하려고 했으나...5조 팀분들이 너무 훌륭하게 정리해주셔서 해당 링크를 남깁니다.
https://www.notion.so/likelion-aischool/I-E-6dcf68bbef7f406fa9835d3bdce3cc75

참고문헌

profile
데이터 분석가를 꿈꿈

0개의 댓글