Python
-
프로그래밍 언어와 파이썬Python 2021. 5. 19. 21:04
파이썬(Python)은 1980년대 후반 귀도 반 로썸이라는 네덜란드 프로그래머가 고안한 하이레벨 하이브리드 프로그래밍 언어입니다. 이러한 파이썬을 알아보기 위해서, 이번 글에서 프로그래밍 언어는 무엇이고 그러한 프로그래밍 언어에 속하는 다양한 언어 중 파이썬은 어떠한 특징을 가지고 있는지 알아보겠습니다. 프로그래밍 언어란? 파이썬 언어의 특징들 프로그래밍 언어란? 프로그래밍 언어는 다수의 작성자들이 텍스트 형태로 이뤄진 문서를 통해 컴퓨터에게 특정 작업의 절차를 전달하기 위해서 사용됩니다. 그렇기에 대부분의 프로그래밍 언어는 '지시어(instruction)'로 구성되어 있습니다 [2]. 예로, 한 배달앱 사용자의 핸드폰에서 발생된 요청이 컴퓨터에게 전달되면 그러한 요청을 어떠한 절차로 처리하고 무엇을 ..
-
파이썬 int 내부구조 (Python int Internals)Python 2021. 2. 22. 21:59
Python 버젼 2.2 이후로는 파이썬에서의 정수는 언제나 int 타입을 가집니다 (이전에는 short int, long int 2가지로 나뉘어 있었습니다)[2]. 그리고 int 타입의 크기는 오로지 가용한 메모리 사이즈로 인해 제한 받습니다. 파이썬 int가 가질 수 있는 max 값(바이트로)은 아래와 같은 sys.maxsize를 통해 구할 수 있는데요: import sys print(sys.maxsize) # 9223372036854775807 이번 글에서는 파이썬 int가 cpython에서 어떻게 구성되는지 살펴보겠습니다: cpython longobject 내부구조 파이썬의 다양한 int 값은 실제 어떻게 cpython longobject에 저장되나 cpython longobject 내부구조 in..
-
파이썬 리스트 내부구조 (Python List Internals)Python 2021. 2. 13. 20:33
파이썬 리스트는 mutable 시퀀스(sequence)로, 주로 유사한(homogeneous) 아이템들의 콜렉션(collections)을 저장하기 위해서 사용합니다. 그렇기에 시퀀스가 기본적으로 가지는 연산자(collections.abc.Sequence ABC)들은 리스트에도 구현되어 있습니다. 이번 글에서는 CPython에서의 리스트 내부구조를 아래와 같은 사항을 중점으로 살펴보겠습니다: 리스트 내부구조와 기본 연산 메모리 할당 관련글: 파이썬 딕셔너리 내부구조 파이썬 튜플 내부구조 파이썬 클래스 내부구조 리스트 내부구조와 기본 연산 cpython 코드 상에서 파이썬 리스트는 다음과 같은 형태를 가지고 있습니다: 흔히 인지하는 리스트의 길이, len(list_a)는 PyVarObject의 ob_size..
-
파이썬 클래스 내부구조 (Python Class Internals)Python 2021. 1. 25. 22:22
클래스(class)는 데이터와 기능을 함께 번들링하는 수단을 제공합니다. 새로운 클래스는 새로운 객체의 type을 생성하며, 해당 type의 새로운 인스턴스(instances) 생성을 가능하게 합니다. 각 클래스의 인스턴스는 그 상태를 유지하기 위해 속성들을 가질 수 있습니다. 또한, 클래스 인스턴스들은 그것의 상태를 변경하기 위해 methods들을 가질 수 있습니다 [1]. class A: pass print(type(A)) # 출력 이 글에서는 클래스(User-Defined class)에 대해 다음과 같은 사항들을 기술합니다: class 구조 - type과 metaclass MRO (Method Resolution Order) class를 구성하는 것들 class / instance 생성 관련글: 파..
-
파이썬으로 구글 시트 생성 후 다른 유저에게 공유하기Python 2021. 1. 16. 21:35
이번 글에서는 스크래핑, 업무자동화에 자주 사용되는 구글 시트를 생성하고, 해당 시트에 다른 유저를 오너로 등록하는 방법을 알아보겠습니다. 테스트를 위해서는 구글 계정 2개가 필요하며 아래와 같은 순서로 진행됩니다: 구글 디벨로퍼 콘솔 접속 및 계정 등록 구글 디벨로퍼 프로젝트 생성 및 Google Sheets & Drive API Enable 프로젝트 Credentials 생성하기 파이썬으로 구글 시트 생성 및 다른 유저를 오너로 등록 테스트 자주 발생하는 에러 해결법 구글 디벨로퍼 콘솔 접속 및 계정 등록 먼저, 생성한 계정 2개 중 파이썬을 사용해 Google Sheet를 API로 생성하고 다른 유저를 오너로 등록할 계정을 등록하여야 합니다. 구글 디벨로퍼 콘솔로 접속하면 아래와 같은 화면이 보입니..
-
파이썬 튜플 내부구조 (Python Tuple Internals)Python 2021. 1. 12. 18:24
파이썬의 튜플은 파이썬 시퀀스(sequence)의 하나로, 주로 Immutable이라는 부분만을 중심으로 기술되곤 합니다. 하지만, 이는 튜플의 또 하나의 큰 장점인 필드명 없이이 다양한 데이터타입(heterogeneous/homogeneous)을 기록한다는 부분을 간과하게 하는데요 [2]. 이번 글에서는 파이썬 튜플의 내부구조와 관련해 아래와 같은 사항을 다뤄보려 합니다: 튜플구조와 2가지 특성 (Immutability, Records with no field names) 최적화 관련글: 파이썬 딕셔너리 내부구조 파이썬 클래스 내부구조 튜플구조와 2가지 특성 튜플은 파이썬의 다른 데이터타입과 비교할 때, 비교적 간단한 구조를 가집니다 [1]: 위와 같이 PyObject, PyVarObject, PyOb..
-
파이썬 딕셔너리 내부구조와 관련 개념 살펴보기 (Python Dictionary Internals and relating concepts)Python 2021. 1. 4. 17:20
파이썬 딕셔너리는 해쉬테이블(Hash Table)로 내부적으로 리스트를 포함(3.6 이후)하고 있으며 파이썬 언어 자체에도 많이 쓰이고 있어서(모듈 네임스페이스, 클래스 및 인스턴스 속성, 함수의 키워드 아규먼트 등 [5]), 그 내부구조를 자세히 공부해보면 다양한 중요개념들을 배울 수 있습니다. 또한, 3.6 버젼에서 내부구조가 변경되면서 키의 Ordering을 보장하였는데, 그 부분도 내부구조를 살펴보며 다룰 수 있을 것 같습니다. 이 글에서는 아래와 같은 사항을 다루고자 합니다: 딕셔너리는 해쉬테이블 왜 3.6 이후 버젼은 딕셔너리 키가 Ordering되나? Combined 및 Split table Memory 할당 Hash collision Key lookup optimization (Old Ve..
-
파이썬 딕셔너리 루프 - 파이썬 딕셔너리 순회하기 (Python Dictionary Iteration)Python 2021. 1. 1. 21:29
코딩초보 파이썬(Python) 공부법, 공부자료 (파이썬입문, 파이썬강좌) 안녕하세요. 이번 글에서는 파이썬을 첫 언어로 코딩에 입문하고자 하시는 분들을 대상으로 지난 3년간 파이썬을 공부하며 느낀 공부법과 엄선한 공부자료를 공유하려고 합니다. 공부법 먼저 kadensungbincho.tistory.com 파이썬 딕셔너리는 다양한 상황에서 많이 사용됩니다. 파이썬 3.6 버젼 이후, 딕셔너리 순서가 보장되면서 루프 안에서도 더 많이 되고 있는데요. 루프 안에서 파이썬 딕셔너리를 사용하는 기본적인 4가지 방법을 알아보겠습니다. 루프 안에서 파이썬 딕셔너리 사용하기: 4가지 for, List Comprehension과 같은 순회 시에, 파이썬 딕셔너리는 아래와 같은 4가지 방법으로(뷰에 접근하여) 가능합니다..