Introducing Python 파이썬 정리(2)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서,
몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

함수

  • 익명 함수: lambda 단일 문장으로 표현되는 익명함수를 lambda 함수 라고 한다.
def makeTitle(titles, func):
  for title in titles:
    print(fuc(title))
def makeCapital(word):
  return word.capitalize()

titles = ['kingdom','her']
makeTitle(titles,makeCapital)
>>> Kingdom
>>> Her

#lambda함수를 적용
makeTitle(titles, lambda word: word.capitalize())
>>> Kingdom
>>> Her

제너레이터

제너레이터(Generator)는 sequence를 생성하는 객체입니다. 제너레이터를 사용하면 전체 sequence를 한 번에 메모리에 생성하여 잠재적으로 아주 큰 sequence를 순회할 수 있습니다.
설명으로는 아직 잘 이해가 안되는 것 같기에 generator의 대표적인 예시를 살펴봅시다.

for i in range(1,4):

range()는 제너레이터의 대표적인 예시입니다. 일반적인 함수라면 반복문을 거쳐 여러번 수행이 될 경우에 매번 각 함수의 첫 줄에서부터 함수가 실행이 됩니다. 하지만 제너레이터는 일반 함수와는 다르게 제너레이터를 순회할 때마다 마지막으로 호출된 항목을 기억하고 다음 값을 반환하는 특징이 있습니다. 따라서 위의 예시에서의 range()함수 처럼 for문에서 반복적으로 호출되지만 이전의 호출된 항목을 기억하기 때문에 i의 값을 순차적으로 반환할 수가 있습니다.

  • 제너레이터 함수 정의하기

range()함수를 대신하여 직접 정의한 custom_range() 제너레이터 함수를 정의하여 봅시다.

def custom_range(first=0, last=10, step=1):
  number = first
  while number < last:
    yield number
    number += step

>>>custom_range
<function custom_range at ...> #일반 함수
>>> ranger = custom_range(1,4)
<generator object custom_range at ...> #함수 생성시 제너레이터 객체 반환

>>> for x in ranger:
  print(x)
1
2
3

단 제너레이터 객체는 한 번만 순회할 수 있기 때문에, 여러번 호출시 다시 시작될 수가 없습니다.

객체

  • 초기화(initialization)

객체를 생성할 때 사용자 정의가 정의한 속성을 할당하려면 객체 initilization method를 사용해야 합니다. 메소드는 init()으로 정해져 있습니다.

class Person:
    def __init__(self, name):
        self.name = name


IU = Person('ji-eun')
print(f'name: {IU.name}')
>>> name: ji-eun

C/C++을 해보신 분이라면 self의 개념에 대해 조금은 느낌이 오실 것 같습니다. 자신을 가르키는 this 포인터 처럼 self 매개변수는 개별 객체 자신을 참조하도록 지정하는 역할을 수행합니다.

클래스에서 init()을 정의할 때는, 첫번째 매개변수로 일반적으로 self를 사용합니다.


self가 아닌 경우

self가 아닌 other 으로 정의하였을 경우, warning message가 뜨기는 하지만 결과는 동일하게 출력되었습니다.

self는 파이썬에서 일종의 약속으로 생각하면 될 것 같습니다.

  • 부모로 부터 클래스 상속받기

  • 메소드 오버라이드 (오버로딩 오버라이딩 오버라이드 개념 차이점 정리)

  • 다중 상속

  • 믹스인

  • getter/setter

  • 매직 메소드


Post의 참고자료와 이미지의 출처는 아래와 같습니다.

처음 시작하는 파이썬[2판], 한빛미디어, 빌루바노빅




2021 의 게시글

NMF

NMF 음수미포함 행렬분해

PCA, EVD

PCA 주성분 분석(차원 축소)

15989번 1,2,3 더하기 4(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

10942번 펠린드롬(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

12865번 평범한 배낭(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.

11066번 파일 합치기(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

2차원 배열 유형 문제

삼성역량테스트에서 출제되는 코테문제들의 경우 2차원 배열을 특정한 기준을 통해 회전시키는 문제가 자주 출제됩니다.

Introducing Python 파이썬 정리(2)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Introducing Python 파이썬 정리(1)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Pipeline CPU(5)- Control Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(4)- Data Forwarding

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(3)- Data Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

맨 위로 이동 ↑