🤗 들어가면서

개발은 자바로 하고 코딩테스트는 파이썬으로 하는 것... 😏😏 
쓰다보면 파이썬이 정말 합리적인 언어라는 생각이 든다!!
이번 글에서는 파이썬의 정신이 무엇인지, 파이썬만의 문법에 대해서 정리하겠다.

파이썬은 특히 "파이썬다움"을 특히 강조한다.🤔🤔 
파이썬의 정신을 따라가면서 코드를 작성하면 합리적인 코드를 짤 수 있지 않을까!!

파이썬

"파이썬의 정신"을 살려 공부해보자.

파이썬은 객체지향언어인가, 함수형 언어인가

파이썬은 한줄씩 읽어가는 "인터프리터 방식"이면서, 멀티 패러다임을 지원하는 언어다.
파이썬으로는 객체지향 프로그래밍, 함수형 프로그래밍, 절차적 프로그래밍 모두 작성할 수 있다.

더 자세한 내용은 다른 글들을 참조해보자.
파이썬의 정신에 대한 글은 한번 읽어보는 것도 좋을 것 같다. 보러가기
개인적으로 생각하는 파이썬의 장점은 파이썬의 다양한 라이브러리를 활용해서 기초 지식없이도 높은 생산성과 원하는 결과물을 낼 수 있다는 것이다.

파이썬의 문법 특징

파이썬의 들여쓰기: 인덴트 Indent

괄호를 사용하지 않고 들여쓰기로 구분한다.
강제는 아니지만 코딩테스트 플랫폼에서는 공백 4칸 들여쓰기를 적용하고 있다.

파이썬의 이름짓기: Snake Case

모두 소문자로 표기하고, 단어는 _로 구분한다.

파이썬의 타입힌트

개인적으로 이렇게 해야하나..?? 라고 생각이 들기는 한다.

변수명: 타입 으로 타입을 지정할 수 있다.
이 경우에 다른 타입을 넣을 경우 오류를 반환한다.

파이썬의 문법

리스트 컴프리헨션

관련 글

컴프리헨션이란, {},[]의 내부에 반복문을 사용해 리스트나 딕셔너리, set자료형을 만드는 것이다.

리스트 컴프리헨션 코드

a_list = [x for x in range(10)]

for 문에서 주입되는 변수를 앞에 써 리스트의 요소로 추가하는 것이다.

컴프리헨션의 if문

a_list = [x for x in range(1, 10+1) if x % 2 == 0]

컴프리 헨션은 if문을 지원한다.
for문 뒤에 위치하며, for문의 변수를 if문에서 검사하고, 통과한 값을 요소로 추가하는 방식이다.

if문과 for문을 여러개를 사용할 수 있지만 가독성이 낮아저 지양하는게 좋다.

제너레이터

파이썬의 제너레이터는 이터러블을 생성하는 객체이다.
yield 키워드를 사용하면 제네레이터 함수가 된다.

구현 코드

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

g = get_natural_number()
for _ in range(100):
    print(next(g))
  • next : iterable(반복 가능한 객체)에서 값을 차례로 가져온다.

제너레이터의 이점

  • 대용량의 데이터를 사용할 때, 메모리에 바로 적재하는 것이 아니라 필요할 때마다 데이터를 생성한다. 따라서 데이터 공간을 아낄 수 있다.
  • 필요한 데이터만 생성하므로 실행속도를 높일 수 있다.
  • 제너레이터는 무한한 시퀀스 예를 들어 무한루프나, 무한 데이터 스트림을 구현할 수 있다.
  • 코드가 간결해지고 가독성이 높아진다.

이런 형식을 추천한다👍

  • range() 함수
  • sum() 함수
  • 제너레이터 표현식 : 괄호()를 사용한다. squares = (x**2 for x in range(1, 1000001))

range

  • 제너레이터의 방식을 활용하는 대표적인 함수이다.
    리스트를 만드는 것보다, range()를 리용해 제너레이터를 만드는 것이 훨씬 메모리가 절약된다.
a = [n for n in range(10000)]
b = range(10000) 
// b가 메모리 사용량이 더 적다. (typerange지만 인덱스로 접근가능)

enumerate

  • 순서가 있는 자료형의 요소과 인덱스 값을 enumerate 객체로 리턴한다.

나눗셈연산자

/ : float 값을 제공한다.
// : 정수형인 몫을 제공한다.

print

파이썬에서 값을 출력하는 방법은 다양하다.

문자열을 만들어서 출력해야하는 경우 f'{}'를, 연결자나 마지막 문자를 바꿔야할 경우 sep=end=를 기억하자.

print(a, b)                                      #1 2
print(a, b, sep=", ")                            #1 2
print(a, b,end="!!\n")                           #1 2
print('{0}은 {1}보다 작다.'.format(a,b))     #1은 2보다 작다.
print('{1}은 {0}보다 크다.'.format(a,b))     #2은 1보다 크다.
print(f'a:{a}는 b:{b}보다 작다.')    #a:1는 b:2보다 작다.
print(f'b:{b}는 a:{a}보다 크다.')    #b:2는 a:1보다 크다.

pass

  • 아무런 하지 않아도 다음 단계로 넘어갈 수 있도록 하는 널 연산이다.
    어떤 작용도 하지 않는다.

locals

  • 로컬 심볼 테이블 딕셔너리를 가져온다. 즉 로컬에 선언된 모든 변수를 조회할 수 있는 강력한 명령이다.

기억하고 싶은 것

  • range() 함수 사용이 반복문보다 메모리를 절약하고 시간을 단축시킨다.
  • sum() 함수 사용이 반복문보다 메모리를 절약하고 시간을 단축시킨다
  • enumerate는 파이썬다운 방법이다.
  • 리스트컴프리헨션을 잘 사용하면 가독성이 좋아지고 코드가 간결해진다.

😏마무리하면서

진짜 아주 짧게 파이썬에 대해서 알아봤다.
range()나 sum()이 간단하다고는 생각했지만 기능적으로도 우수한 건 처음 알았다!!
기억하고 가자!!
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN