Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코딩테스트
- 야근지수
- hackerrank
- programmers
- candies
- [sqld]자격증합격
- 해커랭크
- Recursion: Davis' Staircase
- 피보나치 함수
- 백준
- Special String Again
- Find the nearest clone
- 프로그래머스
- python
- DFS: Connected Cell in a Grid
- Reverse Shuffle Merge
- 파이썬
- BFS: Shortest Reach in a Graph
- Max Array Sum
- 알고리즘
- 격파르타 후기
- Algorithm
- Common Child
- 구슬탈출2
- Roads and Libraries
- 머신러닝
- 격파르타 장점
- 격파르타 합격후기
- Interview Preparation Kit
- 매칭점수
Archives
- Today
- Total
Archive
파이썬 기초 본문
제네릭 프로그래밍
제네릭(generic) : 파라미터의 타입이 나중에 지정되게 해서 재활용성을 높일 수 있는 프로그래밍 스타일.
파이썬은 원래 동적 타이핑(Dynamic Typing)언어이기 때문에 제네릭이 필요 없음.
타입이 표기되지 않기 때문에 특정 변수의 타입을 바로 알기 어려워 가동성이 낮음. 후에 PEP 484에 추가된 타입 힌트(Type Hints)를 통해 제네릭을 사용.
- PEP 484는 파이썬 3.5부터 사용 가능.
타입 힌트를 통해 함수의 파라미터가 어떤 자료형이 들어가고, 리턴 값이 무엇인지 명시해줌으로써 가독성을 향상시킴.
def are_equal(a : int, b : int) -> bool:
return a==b
네이밍 컨벤션
- Snake case : 각 단어를 '_'로 구별. PEP8
- snake_case (파이썬)
- Carmel case : 단어별로 대소문자를 구별하여 표기
- carmelCase (자바)
제너레이터(Generator)
루프의 반복 동작을 제어할 수 있는 루틴 형태
- 숫자 1억개를 만들어내는 프로그램
- 만약 제너레이터가 없으면 숫자 1억개를 메모리에 저장하고있음.
- 제너레이터를 이용하면, 1억개의 숫자를 만드는 제너레이터만 생성하고 나중에 필요할 때 숫자를 만들어낼 수 있음.
yield 구문을 통해 제너레이터를 리턴할 수 있음.
기존 함수에서는 return 이후 함수가 종료되지만, yield를 사용하면 중간 값을 리턴한 이후 함수는 종료되지 않고 맨 끝에 도달할 때까지 실행됨.
def get_number(): n = 0 while True: n += 1 yield n # generator 생성 g = get_number() for _ in range(0, 100): # 1부터 100까지 출력함. print(next(g))
range
generator 방식을 활용하는 대표적인 함수로 range를 예로 들 수 있음.
숫자 100만개를 생성하는 상황
a = [i for i in range(1000000)]
b = range(1000000)
print(b[999]) #999
메모리 점유율은 b가 훨씬 낮고, index로 접근 시에 바로 생성하도록 구현되어 있기 때문에 리스트처럼 사용할 수 있음.
print('aa', end=' ')
print('bb')
# aa bb
a = ['A', 'B']
print(' '.join(a))
# A B
idx = 1
fruite = 'Apple'
print('{}: {}'.format(idx+1, fruit))
# 2: Apple
# f-string(formated string literal) 사용하면 변수를 인라인으로 삽입할 수 있음.
# python 3.6+에서만 지원
print(f'{idx+1}: {fruit})
# 2: Apple
'공부 > Python' 카테고리의 다른 글
List, Set, Dictionary 내장함수 시간복잡도 (0) | 2020.09.08 |
---|---|
리스트, 딕셔너리 연산 및 시간복잡도 (0) | 2020.07.29 |
[파이썬 기초] 비공개 멤버와 정적 메서드 (0) | 2017.10.04 |
[파이썬 기초] 상속 (0) | 2017.10.03 |
[파이썬 기초] 클래스 (0) | 2017.10.03 |
Comments