Iterator, Generator
·
Python
문제 두가지 아주 아주 큰 list 0부터 99,999,999까지 숫자의 제곱을 출력하는 코드를 살펴보겠습니다 for i in [i ** 2 for i in range(100000000)]: print(i) 첫번째 결과인 0의 제곱이 출력될 때까지 얼마나 걸릴까요? 제 컴퓨터에서는 약 27초가 걸렸습니다. 그냥 0의 제곱을 출력할 뿐인데 왜 이렇게 오래 걸릴까요? 문제는 바로 [i ** 2 for i in range(100000000)] 부분에 있습니다. 이 코드는 List Comprehension이기 때문에 for loop를 돌기 전에 0부터 99,999,999까지 모든 수의 제곱을 먼저 계산합니다. 그리고 만들어진 list를 대상으로 for loop가 돕니다. 하지만 우리가 하고 싶은 것은 순차적으로..
List Comprehension
·
Python
시작하기 전에 list comprehension은 기능을 배우는 것보다 이름을 이해하는 것이 더 어렵습니다. list comprehension이라는 용어에 대한 설명은 관심있는 분들을 위해서 이 글의 마지막에 남겨두겠습니다. 소개 list comprehension이 하는 일은 이미 있는 list를 가지고 무엇인가 작업을 해서 새로운 List를 만드는 것입니다. 간단한 예를 하나 보겠습니다. [1, 2, 3, 4]의 각 값을 제곱해서 [1, 4, 9, 16]을 만들고 싶다고 가정해보겠습니다. result = [] for i in [1, 2, 3, 4]: result.append(i ** 2) print(result) [1, 4, 9, 16]아주 직관적인 코드입니다. Functional Programming..
Jupyter Lab
·
Python
소개 파이썬은 장점이 참 많은 언어입니다. 깔끔한 문법, 수많은 라이브러리, 다양한 실행 환경 등 말이죠. 파이썬의 수많은 장점 중에서 빼놓을 수 없는 것이 바로 인터렉티브한 개발 환경이라고 생각합니다. C/C++나 Java 같은 언어만 사용하다가 파이썬을 접하게되면 언어 자체 뿐만 아니라 인터렉티브한 개발 환경에 감탄을 하게 됩니다. 아주 기본적인 REPL(Read-Eval-Print Loop)를 제공하는 기본 파이썬 명령만 하더라도 이미 훌륭하지만, 여기에서 iPython으로 넘어간다면 그야말로 신세계를 경험할 수 있습니다. 이렇게 뛰어난 파이썬의 개발 환경 속에서도 요즘 가장 돋이는 것은 Jupyter Lab이라고 할 수 있습니다. Jupyter Lab을 사용하면 IDE를 따로 설치하지 않고도 웹 ..
*args, **kwargs
·
Python
*args, **kwargs Python 코드를 보다보면 함수에 *args, **kwargs와 같은 표현을 볼 수 있습니다. 가변 인자들인데요. 가변 인자라는 말부터가 어렵습니다. 함수에 전달한 인자들이 딱 고정되어 있지 않고, 상황에 따라 바뀔 때를 지원하기 위해서 사용하는데요. 예를 들어서 한번 살펴보겠습니다. positional arguments, keyword arguemnts 본격적으로 *args, **kwargs에 대해서 이야기하기 전에 positional arguments와 keyword arguments를 먼저 다루어보겠습니다. 예를 들어 아래와 같은 함수가 있다고 가정해보겠습니다. def f(a, b, c): print(a, b, c) 아래와 같이 일반적으로 호출을 할 수 있습니다. f(..
Python Reflection 맛보기
·
Python
Introspection vs Reflection Python이 가지는 매력 중의 하나는 언어의 많은 부분이 동적이라는 점입니다. Instrospec과 Reflection이 그런 기능 중 일부인데요. Introspection은 실행 시에 object에 대한 정보를 알아내는 것, Reflection은 여기에서 그치지 않고 object에 대한 정보를 수정하는 것을 의미합니다. 엄밀히 두가지의 의미가 다르지만 Reflection으로 합쳐서 부르는 경우가 많습니다. Reflection 기능은 자주 쓰이지는 않지만 알아두면 유용할 때가 있습니다. 예를 들어, 코드 작성 시에는 함수 이름을 모르지만 실행 중에 함수 이름을 알아내서 실행시킨다거나, Python의 Duck typing을 통과하기 위해서 attribut..
pyc 파일에 대해서
·
Python
1. *.pyc 파일 Python으로 코딩을 하다 보면 내가 만들지 않은 *.pyc 파일들이 만들어져 있는 것을 볼 수 있습니다. 가끔은 *.pyc가 문제를 일으키기도 하고요 (bad magic number in 'application': b'\x03\xf3\r\n': ImportError) *.pyc는 Python이 *.py를 읽어서 실행시킬 때 자동 생성되는 파일인데, 이는 Python 프로그램이 어떻게 구동되는지와 관련이 있습니다. (이야기를 진행하기에 앞서 한가지 명확히 해야 할 것이 있습니다. 우리가 보통 Python이라고 이야기하지만, Python이라는 것은 프로그래밍 언어이기 때문에 앞으로 이야기할 내용은 엄밀히는 CPython에 대한 이야기입니다. CPython은 Python이라는 언어를 ..