Python/Algorithm

python 문법

이니니 2022. 6. 4. 04:02

인덴트(들여쓰기)

python의 대표적인 특징으로써 공백 4칸을 원칙으로 한다.

 

네이밍 컨벤션

python의 변수명 네이밍 컨벤션은 자바와 달리, 각 언어를 밑줄( _ )로 구분하여 표기하는 스네이크 케이스를 따른다.

(스네이크 케이스는 일반적으로 모두 소문자로 표기하지만, 경우에 따라 시작 문자는 대문자로도 표기한다.)

 

타입 힌트

python은 동적 타이핑 언어이지만, 타입을 지정할 수 있는 타입 힌트 기능이 존재한다.

ex) def fn(a: int) -> bool:

하지만, 동적으로 할당될 수 있으므로, 문자열에 정수를 할당하는 등의 사용은 지양해야 한다.

 

리스트 컴프리헨션

python은 map, filter와 같은 함수형 기능을 지원하며, 람다 표현식도 지원한다.

ex)  >>> list(map(lambda x: x + 10, [1, 2, 3]))

[11, 12, 13]

>>> [n * 2 for n in range(1, 10 + 1) if n % 2 == 1]

[2, 6, 10, 14, 18]

한 줄로 간결하게 작성할 수 있는 리스트 컴프리헨션은 가독성이 좋은 편이지만, 무리하게 복잡하게 작성할 경우 가독성을 떨어뜨릴 수 있다. 대체로 표현식은 2개를 넘지 않아야 한다.

 

제너레이터

제너레이터는 루프의 반복 동작을 제어할 수 있는 루틴 형태이다. 이 때, yield 구문을 사용하면 제너레이터를 리턴할 수 있다. 기존의 함수는 return 구문을 마주치면 값을 리턴하고 모든 함수의 동작을 종료하지만, yield는 제너레이터가 여기까지 실행 중이던 값을 내보낸다는 의미로써, 중간 값을 리턴한 다음, 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행된다. 

def get_natural_number():
	n = 0
    while True:
    	n += 1
        yield n
 
get_natural_number()

<generator object get_natural_number at 0x10d3139d0>

다음과 같은 결과로, 함수의 리턴 값은 제너레이터가 된다. 만약, 다음 값을 생성하고 싶다면, next()를 수행하면 된다.

 

range

제너레이터의 방식을 활용하는 대표적인 함수로써, 주로 for 문에서 쓰인다. 

>>> list(range(5))
[0, 1, 2, 3, 4]

>>> range(5)
range(0, 5)

>>> type(range(5))
<class 'range'>

>>> for i in range(5):
...	print((i, end=' ')
0 1 2 3 4

 

enumerate

enumerate()는 '열거하다'는 뜻의 함수로, 순서가 있는 자료형(list, set, tuple 등)을 인덱스를 포함한 enumerate 객체로 리턴한다.

>>> a = [1, 2, 3, 2, 45, 2, 5]
>>> a
[1, 2, 3, 2, 45, 2, 5]

>>> enumerate(a)
<enumerate object at 0x1010f83f0>

>>> list(enumerate(a))
[(0, 1), (1, 2), (2, 3), (3, 2), (4, 45), (5, 2), (6, 5)]

이처럼 인덱스를 자동으로 부여해준다. 

 

// 나눗셈 연산자

/ 은 기본 나눗셈 연산자이고, // 은 몫을 구하는 연산자이다.

>>> 5 / 3
1.666666666666666667

>>> type(5 / 3)
<class 'float'>

>>> 5 // 3
1

>>> int(5 / 3)
1

나머지를 구하는 연산자는 % 이다. 

>>> 5 % 3
2

몫과 나머지를 동시에 구할 땐, divmod() 함수를 사용한다.

>>> divmod(5, 3)
(1, 2)

 

print

print() 함수를 통해 값을 출력한다

 >>> print('A', 'B')
 A B
 
 >>> print('A', 'B', sep=',')
 A, B
 
 >>> print('A', end = ' ')
 print('B')
 A B
 
 >>> a = ['A', 'B']
 >>> print(' '.join(a))
 A B
 
 >>> idx = 1
 >>> fruit = 'Apple'
 >>> print('{}: {}'.format(idx + 1, fruit))
 2 : Apple

 

pass

python에서 pass는 null연산으로, 아무것도 하지 않는 기능이다. 보통 코드를 구현할 때, pass를 먼저 넣은 후, 추후 수정하며 구현할 때 쓰인다.

class MYclass(object):
    def method_1(self):
    	pass
        
    def method_2(self):
    	print('method')
        
c = MYclass()

 

'Python > Algorithm' 카테고리의 다른 글

트리  (0) 2022.06.18
스택, 큐, 덱  (0) 2022.06.12
이진탐색  (0) 2022.06.12
정렬의 종류 ( Python / 파이썬 )  (0) 2022.06.09
점근적 표기법  (0) 2022.06.04