본문 바로가기

Python

(21)
TypeError: method() takes no keyword arguments *바쁘신 분들을 위한 빠른 해결법 ## test_dict.get("k1", default=0) ## default라는 설명을 적은것이 에러의 원인 test_dict.get("k1", 0) ## default라는 설명을 제거하면 된다. 해당 에러는 왜 발생하는가? no keyword argument 에러는 python의 함수에서 Keyword Argument를 사용할 수 없기 때문입니다. 이러한 함수는 주로 Built-in function에서 발생합니다. Python은 원래 Keyword Argument를 자유롭게 사용할 수 있습니다. 하지만 python에서 제공하는 Built-in function은 C-level API이기 때문에 Keyword Arguments가 제공되지 않습니다. built-in fu..
valueerror: exceeds the limit (4300 digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit * 바쁘신 분들을 위한 빠른 해결법 import sys sys.set_int_max_str_digits(7000) ## 7000보다 더 높은 숫자 입력도 가능 Python의 int는 overflow되지 않는다? Python의 int는 보통의 상식선인 4bytes 크기가 아닌 28bytes나 소모하고 있습니다. 메모리 공간을 많이 차지하는 대신에 overflow에 걱정이 없다는 사실 알고 계셨나요?? * 자세한 글은 https://tyoon9781.tistory.com/entry/python-int-size-28bytes를 참조해 주세요 python의 int는 C/C++의 int와는 비교가 안될 정도로 큰 수를 다룰 수 있습니다. 그렇지만 혹시 의도적이지 않게 큰 숫자를 만들어 버리고 출력하면 시스템에 무..
Python - List Comprehension *바쁘신 분들을 위한 3줄 요약 1. List생성 code를 한 줄로 표현 가능한 문법입니다. 2. 어려워 보이지만 사실상 python의 문법을 거의 유지하고 있습니다. 3. 속도측면에서 유리할 때도 있지만 주의해서 사용해야 합니다. Introduce(소개) List Comprehension를 한국어로 직역하면 "목록 표현식"이라 할 수 있습니다. python에서는 List 객체를 한 줄로 표현할 수 있는 고유한 문법을 뜻합니다. 이 문법을 사용하면 List를 작성할 때 보다 간결하게 작성이 가능합니다. 예를 들어, 0~9까지의 수 중, 3의 배수가 아닌 것만 list에 담고 싶을 때, 기존 방식으로는 이렇게 작성합니다. a = [] for i in range(10): if i % 3 != 0: a.ap..
Python - np.array vs list python에는 데이터를 다루기 위해 주요 쓰이는 주요한 자료구조가 있습니다. ## 서로의 동작이 사실 좀 다릅니다. 자세한 내용은 다음에... ## list 선언. a = list([1, 2, 3]) a = [1, 2, 3] ## set 선언. b = set([1, 2, 3]) b = {1, 2, 3} ## tuple 선언. c = tuple([1, 2, 3]) c = (1, 2, 3) ## dict 선언 d = dict(k1=1, k2=2, k3=3) d = {"k1": 1, "k2": 2, "k3": 3} List, set, tuple, dict은 다음과 같은 특징을 가지고 있습니다. Type 특징 List 수정, 중복데이터를 허용한다. Set 중복데이터는 허용하지 않는다. Tuple 수정이 불가능..
Python - Int의 크기가 28bytes인 이유 *바쁘신 분들을 위한 3줄 요약 1. 28 bytes = refcnt (8 bytes) + Type pointer (8 bytes) + PySize (8 bytes) + digits (4 bytes) 2. refcnt는 GC를 위한 참조수, Type pointer는 Type을 표현하기 위한 포인터입니다. 3. Pysize, digits의 Array 구조 덕분에 큰 수에 대한 Overflow 걱정이 없습니다. *목차 - Python의 int는 쓸데없이 많은 메모리를 차지한다? - CPython의 코드를 살펴보자 - PyLongObject 분석 - Python의 int는 Overflow 되지 않는다 - Python에서 표현 가능한 가장 큰 숫자는? Python의 Int는 쓸데없이 많은 메모리를 차지한다? 혹..
Python - Mutable vs Immutable * 바쁘신 분들을 위한 3줄 요약 1. mutable이란, "메모리 주소를 유지한 채 값을 변경할 수 있다"란 뜻이다. 2. list, dict 등은 변경 가능(mutable)하며 3. int, float, string, tuple 등은 변경 불가능(immutable)하다. Mutable, Immutable은 무슨 뜻일까? mutable은 변경가능이란 뜻이며 immutable은 변경 불가능이란 뜻입니다. python에서 변경 가능(mutable)한 Data Type으로는 list, dict 등이 있으며, 변경 불가능(immutable)한 Data Type으로는 int, float, string, tuple 등이 있습니다. 하지만 이 정도의 설명으로는 오해를 하기 쉽습니다. int는 정말로 변경이 불가능한..
Python - 기본 문법정리 * 목차 1. 주석 2. 변수 3. 연산자 4. 변수 선언 5. 조건문 6. 반복문 7. 함수 8. 클래스 주석(Comments) python에서 지원하는 주석인 #과, 주석처럼 사용하는 Triple quotes가 있습니다. Triple quotes는 실제로는 string 객체지만, 주석으로 사용을 많이 합니다. Comment : #을 사용하며, 글자 뒤에 한 줄만 적용 됩니다. print해도 출력할 수 없습니다. # 주석1 입니다. # 주석2 입니다. Triple quotes : 큰 따옴표, 작은 따옴표를 사용하여 여러 줄에 적용합니다. print로 출력할 수 있습니다. """ document explain1 document explain2 """ ''' document explain1 document..
Python - List는 어떻게 데이터를 관리하는가? *바쁘신 분들을 위한 3줄 요약 1. List는 데이터가 저장된 주소들의 나열이다. (C언어 Level에서 이중포인터) 2. 데이터 주소만 List에 저장하기 때문에, 데이터 Type이 어떤 것이던지 List로 다룰 수 있음. 3. List는 데이터를 직접 다루는 게 아니기 때문에, Array에 비해 데이터를 다루는데 시간이 오래 걸린다. List는 어떠한 Data Type도 원소로 다룰 수 있다. Python에서 List를 다루다 보면, 다양한 Type에 대해서도 잘 동작하는 것을 경험합니다. >>> import numpy as np >>> a = [1,2.2,(3,4), "5", np.array([6,7]), {"key8": 9}, 10] >>> print(a) ## list에 int, float, ..
Python - is와 ==의 차이 * 바쁘신 분들을 위한 3줄 요약 1. is는 변수가 저장된 장소가 같은 지 확인합니다. 2. ==는 변수의 값이 같은 지 확인합니다. 3. 숫자, 글자 같은 고정값(Literal)에 is 연산자를 사용하면 SyntaxWarning을 일으킵니다. * 이 글에서 작성된 메모리 주소는 모두 가상입니다. 참고 바랍니다. 파이썬(python)에서는 "==" 연산자를 활용하여 같은 값인지 확인합니다. >>> a = 0 >>> b = 0 >>> a == b True 그런데 파이썬에는 is을 사용하는 경우도 있습니다. >>> a = 0 >>> b = 0 >>> a is b True is와 == 는 동일한 연산자일까요? ==와 is는 무엇이 다른 걸까요? is 연산자는 변수의 저장 위치가 같은지를 확인하는 연산자입니다..
Python - 파이썬의 선(The Zen of python) * 바쁘신 분들을 위한 3줄 요약 1. 가독성은 코드에 정말로 중요합니다. 2. 코드는 가독성이 정말로 중요합니다. 3. 코드는 정말로 가독성이 중요합니다. 4. 코드는 정말로 중요합니다 가독성이. 소개 (Introduce) The Zen of python은 파이썬 기여자인 Tim Peters가 파이썬의 설계철학을 널리 알리기 위해 작성했습니다. Zen은 고요할 선(禪)의 영어발음 입니다. 이 한자는 정신 집중을 통해 깨달음의 경지에 다가가는 것을 뜻하는 불교용어입니다. 비슷한 단어로는 명상(meditation)이 있겠습니다만, 명상이란 단어로 직역하기에는 의미 차이가 꽤 있는 편입니다. 발음 그대로 "선"이라고 번역하도록 합니다. 이하 내용은 The Zen of Python의 전문 및 번역입니다. * ..