뮤트 개발일지

AIFFEL 아이펠 4일차 본문

AIFFEL

AIFFEL 아이펠 4일차

박뮤트 2021. 12. 30. 18:07

enumerate(): 리스트, 문자열, 튜플 등이 있는 경우 순서와 리스트의 값을 함께 반환

아래 코드에서는 list 안에 있는 순번이 i에, 값은 value에 저장되어 코드를 진행한다.

for i, value in enumerate(list):

이중 for문: for문 안에 또 for문을 넣어 작성한 코드. 저작권 문제로 아이펠 노드가 아닌, 내가 만든 이중 for문을 아래 적어놓는다.

for y in range(10):
	for x in range(10-y):
    	print(' ', end = '')
    print('*' * (y * 2 - 1))

코드로 만든 트리

그럼 예쁜 트리가 짜잔! (코딩하면서 이런 아기자기한 거 만드는 게 재밌더라.. 연습문제 귀여운 걸로 내줘여)

 

리스트 컴프리헨션 list comprehension: 리스트, 셋, 딕셔너리와 같은 순회형 컨테이너에서 가공한 새로운 리스트를 생성하는 방법

 

제너레이터 generator: yield 키워드를 사용한다. yield는 순서를 밖으로 양보한다. 데이터의 양이 많을 때 데이터를 전부 메모리에 올려놓고 처리해야할 데이터를 한 개씩 로드해서 사용할 수 있기 때문에 머신러닝에서 많이 사용된다.


Try-Except: 예외 처리 방법. tyr 다음에 정상적으로 작동했을 때의 코드를 쓰고, except 뒤에는 에러가 발생했을 때 동작할 코드를 쓴다.


멀티프로세싱 Multiprocessing: 병렬처리(parallel processing)를 이용하여 컴퓨터가 작업하는 속도를 향상시킨다. 

* if __name__ == '__main__' : 코드 시작점을 표시하는 명령어. __name__에 __main__(임포트한 모듈 이름)이 할당되어 모듈에서 제공하는 함수 등을 사용할 수 있게 된다.

 

pool = mulitprocessing.Pool(processes = 프로세스 개수): 병렬처리 시, 입력한 프로세스만큼 사용하도록 한다.

pool.map(함수명, 리스트): 병렬화 시키는 함수. 함수에 리스트 원소들을 하나씩 넣는다. 

예) count('p1'), count('p2'), count('p') 생성된다.

pool.close(): 병렬화 끝에 나온다. 더이상 새로운 작업을 추가하지 않을 때 사용한다.

pool.join(): 프로세스가 종료될 때까지 대기하도록 지시하는 구문


함수를 사용하면 좋은 점: 코드의 효율성, 코드의 재사용성, 코드의 가독성이 향상된다.

pass: 함수 내부 구현은 나중에 하려 할 때 사용한다. 아무일도 일어나지 않는다.

 

함수 연달아 사용하기

def say_something(txt):
    return txt

def send(function, count):
    for i in range(count):  
        print(function)
    
send(say_something("안녕!"), 2)

===>

안녕!

안녕!

 

함수 안에 함수, 2개 이상 return 하기

list_data = [30, 20, 30, 40]

def minmax_function(x_list):
        
    def inner_min_function(x):
        length = len(x)
        min_result = x[0]
        for i in range(length):
            if min_result > x[i]:
                min_result = x[i]
        return min_result
    
    def inner_max_function(x):
        length = len(x)
        max_result = x[0]
        for i in range(length):
            if max_result < x[i]:
                max_result = x[i]
        return max_result
        
    x_min = inner_min_function(x_list)
    x_max = inner_max_function(x_list)
    
    minmax_list = [x_min, x_max]

    return minmax_list

print("최솟값, 최댓값은 : ", minmax_function(list_data))
print("최솟값은 : ", minmax_function(list_data)[0])
print("최댓값은 : ", minmax_function(list_data)[1])

* 함수 안에서의 함수는 함수 내부에서만 사용할 수 있다. 


람다 표현식 lambda expression: 익명함수

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

클래스 class: 비슷한 역할을 하는 함수들의 집합

모듈 module: 함수, 변수, 클래스를 모아놓은 파일

패키지 package: 여러 모듈을 모아놓은 폴더

 - 패키지 설치방법: 'pip install 패키지 명'으로 설치


절차 지향 프로그래밍: 순차적으로 프로그래밍하는 방법

객체 지향 프로그래밍: 프로그램을 상호작용하는 객체들의 집합으로 보게 하는 것

 

함수형 프로그래밍: 함수로 문제를 분해한다. 이 함수들은 입력을 받아 출력을 만들어 내기만 한다. 주어진 입력이 값을 생성하면 이 출력값은 함수 외부의 다른 변수나 함수에 의해 변하지 않는다. 

- (특징1) 순수성

예)

def pure_mul(a, b):
    return a * b

print(pure_mul(4, 6))

===> 24

- (특징2) 모듈성: 작은 함수들로 쪼갠다. 가독성이 좋아지고 오류를 확인하기 쉬워진다.

- (특징3) 디버깅과 테스트 용이성: 각각의 함수가 작고 명확하기 때문에 디버깅을 쉽게 할 수 있다. 또한 올바른 입력을 함수에 입력하고 결과가 예상과 일치하는지 확인만하면 되기 때문에 테스트가 쉽다.


pep8

- 한 줄의 코드 길이는 79자 이하여야 한다.

- 함수와 클래스는 다른 코드와 빈 줄 두 개로 구분한다.

- 클래스에서 함수는 빈 줄 하나로 구분한다.

- 변수 할당에서 스페이스 하나만 사용한다.

- 리스트 인덱스, 함수 호출에는 스페이스를 사용하지 않는다.

- 쉼표, 쌍점, 쌍반점 앞에는 스페이스를 사용하지 않는다.

- 변수명 앞에 _(밑줄)이 붙으면 함수 등의 내부에서만 사용되는 변수이다.

- 변수명 뒤에 _(밑줄)이 붙으면 라이브러리나 파이썬 기본 키워드와 충돌을 피할 때 사용한다.

- 함수명은 소문자로 쓴다.

- 상수는 모듈 단위에서만 정의하고 모든 단어는 대문자, 필요하면 밑줄로 나눈다.

 

snake_case: 모든 공백은 _로 바꾸고 모든 단어는 소문자이다. 함수, 변수 등을 명명할 때 사용한다.

PascalCase: 모든 단어는 대문자로 시작하고 클래스를 명명할 때 사용한다.


파이썬 코딩 도장

Unit 22. 리스트와 튜플 이용하기

Unit 23. 2차원 리스트 이용하기

Unit 25. 딕셔너리 응용하기

Unit 26. 세트 사용하기

 

파이썬 코딩 도장 정리는 다른 카테고리에 따로 정리하였음!