티스토리 뷰
인덴트
- PEP 8 이후로 추천하는 방식은 tab이나 2칸 space가 아닌 4칸 space이다.
- parameter가 첫째줄에 시작하고, 다음줄로 내려갈 경우 아래와 같이 parameter 시작 위치 선을 맞춰준다.
1
2
|
foo = long_function_name(var_one, var_two,
var_three, var_four)
|
cs |
- parameter가 첫째줄에 시작하지 않을 때, 줄바꿈이 발생하면 indent로 구별해준다.
1
2
3
4
5
6
7
8
9
|
def function_name(
param_1, param_2,
param_3):
print(1)
foo = long_function_name(
param1, param2
param3, param4)
|
cs |
Naming Convention(네이밍 컨벤션)
- 파이썬은 기본적으로 '_'를 사용하는 스네이크 케이스(Snake Case)를 권장한다. 연구 결과, 스네이크 케이스가 카멜 케이스보다 훨씬 인지하기 쉽다고 한다.
ex) const_example
- 카멜 케이스(Camel Case)는 여러 단어로 이루어진 변수명을 대소문자로 구별하는 것이다. 하지만 시작 단어는 무조건 소문자로 시작한다.
ex) constExample
- 파스칼 케이스(Pascal Case)는 카멜케이스와 기본적으로 비슷하여 대소문자로 단어들을 구별하지만 시작 단어가 대문자라는 점에서 차이가 난다.
ex) ConstExample
Type Hint(타입 힌트)
1
2
3
4
5
6
7
|
# 기존 타입 명시가 없는 방식
def fn(a):
pass
# 타입 힌트로 파라미터의 타입을 명시하는 방식
def fn(a: int) -> bool:
# 파라미터 a는 정수형이며 이 함수의 리턴값은 bool type이 된다 pass
|
cs |
Python3 vs Python2
- 나눗셈 연산
-- Python 2 버전에서는 나눗셈연산(/) 후 타입을 유지해야 하기 때문에 5/3 의 결과가 int형으로 나와야하므로 1.666... 이 아닌 1로 출력되었다.
-- Python 3에서는 나눗셈연산은 float으로 정상 출력되고, 몫을 구하는 연산(소수점 이하를 버리는 버림연산, 내림 연산)은 '//' 으로 처리한다.
- print문
-- Python2 까지 print는 절(statement)였으므로 괄호가 없이 사용하였지만 Python3 부터는 함수가 되어 print()가 되었다.
-- 코딩테스트에서는 print를 이용한 stdout 출력 결과로 디버깅 하지만 실무에서는 추천하지 않는다.
-- print의 콤마(,) 구분은 default로 공백이 설정되어 있다.
ex) print(1, 3) ==> 1 3
-- 위의 구분을 ' '에서 sep을 이용해 바꿀 수 있다.
ex) print(1,3, sep=',') ==> 1,3
-- 파이썬 print() 함수는 줄바꿈을 디폴트로 가지고있어 줄바꿈을 원하지 않는 경우 end를 통해 없앨 수 있다.
ex) print('aa', end=' ')
print('bb')
==> aa bb
구글 파이썬 스타일 가이드
- 함수의 기본 값으로 가변 객체(Mutable Object)를 사용하지 않아야 한다. 함수가 객체를 수정하면 기본값이 변경되기 때문이다.
1
2
3
4
5
6
7
8
9
10
11
|
# Not good enough
def foo(a, b=[]) :
def foo(a, b: Mapping={}):
# Better code
def foo(a, b=None):
if b is None: b = []
def foo(a, b: Optional[Sequence] = None):
if b is None: b = []
|
cs |
- True, False를 판별할 때에는 암시적(Implicit)인 방법을 사용하는 편이 간결하고 가독성이 높다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# Not good enough
if len(users) == 0: print()
if foo is not None and not foo: self.handle_zero()
if not i % 10: self.handle_multiple_of_ten()
# Better code
if not users: print()
if foo == 0 : self.handle_zero()
if i % 10 == 0 : self.handle_multiple_of_ten()
|
cs |
'알고리즘 학습 > 파이썬 알고리즘 인터뷰' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] - 7장 (배열) (0) | 2020.11.18 |
---|---|
[파이썬 알고리즘 인터뷰] - 6장 (문자열 조작) (0) | 2020.11.12 |
[파이썬 알고리즘 인터뷰] - 5장 (리스트, 딕셔너리) (0) | 2020.11.12 |
[파이썬 알고리즘 인터뷰] - 4장 (빅오, 자료형) (0) | 2020.11.09 |
[파이썬 알고리즘 인터뷰] - 2장 프로그래밍 언어 (0) | 2020.11.05 |
- Total
- Today
- Yesterday
- 섬의개수#백준알고리즘#Python
- 날짜 계산#BOJ#완전탐색#Python
- 토마토#백준알고리즘#Python
- N으로 표현#DP#Programmers#Python
- PassingCars#Codility#Python
- filter#isalnum#lower
- 백준 알고리즘#BackTracking
- 파이썬알고리즘인터뷰#4장
- 공유기 설치#BOJ#이분탐색#Python
- NumberofDiscIntersections#Codility#Sort#Python
- Swift#Tuples#Range
- 텀 프로젝트#백준알고리즘#Python
- 반복수열#백준알고리즘#Python
- 암호코드#dp#BOJ#Python
- Triangle#Sorting#Codility#Python
- django
- API#lazy#
- Brackets#Stacks and Queues#Codility#Python
- 배열합치기#분할정복#BOJ#Python
- 미로 탐색#백준알고리즘#Python
- 종이자르기#분할정복#BOJ#Python
- 순열사이클#BOJ#Python
- 쿼드트리#BOJ#분할정복#Python
- django#slicing
- 병든 나이트#BOJ#탐욕법#Python
- 터틀비치#리콘#xbox#controller
- 나무자르기#BOJ#이분탐색#Python
- 리모컨#완전탐색#BOJ#Python
- Distinct#Codility#Python
- 랜선자르기#이분탐색#BOJ#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |