TIL (Today I Learned)/Python13 [Python] Numeric types 파이썬에 대한 기본적인 이해를 위해 작성했습니다 c언어로 pintOS프로젝트를 할 당시를 떠올리면 변수를 선언할 때 자료형을 명시해야 했다. 하지만, 파이썬은 다르다. 심지어 이미 선언한 변수에 다른 자료형을 참조할 수 있다. 이번 포스팅에서는 파이썬이 어떻게 숫자를 다루는지 포스팅한다. #1 int 객체? c언어에서 우리는 숫자에 대한 자료형을 명시하기 위해서 해당 수를 표현하기 위한 바이트의 개수에 기준하여 자료형을 명시했다. 파이썬은 어떻게 작동하기에 이런 과정이 필요 없을까? 파이썬에서 모든 것은 '객체'라고 했다. 다른 언어에서는 해당 값 만을 저장하지만, 파이썬은 해당 값을 상태로 가지는 객체를 메모리에 저장한다. 이 과정에서 객체를 저장하기 위한 메모리 오버헤드가 발생한다. int 객체는 가.. 2023. 4. 13. [Python] 변수와 메모리 (파이썬 최적화) #4 파이썬에 대한 기본적인 이해를 위해 작성했습니다 파이썬 최적화에 대해 알아보자. 다음 블로그를 참고했습니다. https://this-programmer.tistory.com/508 #8 Int interning 주의할 점은, Immutable 객체를 참조할 때 동일한 객체를 참조하지 않을 수도 있다. Python이 자동으로 공유 참조를 하지만, 언제나 작동하지는 않으며 될 때도 있고 안될 때도 있다는 점을 명심해야 한다. 지난 포스팅 '변수와 메모리 #2'의 마지막 줄이다. a = 10 b = 10 위의 경우 동일한 메모리 주소를 참조하게 된다. 하지만, 257 이상의 값을 참조하는 경우 Python은 공유 참조를 만들지 않는다. a = 500 b = 500 변수 a와 b는 서로 다른 메모리 주소를 참조.. 2023. 4. 11. [Python] 변수와 메모리 #3 파이썬에 대한 기본적인 이해를 위해 작성했습니다 #7 Variable Equality 우리는 두 변수가 같은지 다른지 확인하기 위해서 'is'와 '=='를 사용할 수 있다. 하지만 이 두 방법은 서로 다르다. is는 Memory Address가 같은지 확인한다. 이를 identityoperator라고 부른다. 같지 않은지 확인하기 위해서는 is not을 사용하면 된다. == 는 Object State (data)가 같은지 확인한다. 이를 equality operator 라고 부른다. 같지 않은지 확인하기 위해서는 != 을 사용하면 된다. 다음의 상황을 한번 생각해 보자 (1) a = 10 b = a a is b # true a == b # true (2) a = 'hello' b = 'hello' a i.. 2023. 4. 5. [Python] 변수와 메모리 #2 파이썬에 대한 기본적인 이해를 위해 작성했습니다 int 객체의 '값'은 절대로 바뀔 수 없다. #3 Variable Re-Assignment 변수에 값 재할당하는 경우, 변수가 참조하는 주소의 int 객체 값이 바뀌는 것이 아니라 새로 생성된 int 객체의 주소를 참조하게 된다. 예를 들어서 다음과 같이 변수에 두 번 값을 할당해 보자. my_var = 10 my_var = my_var + 5 변수는 처음에 10이라는 값을 가진 int 객체가 저장된 주소 0x1000(예를 들어서)를 참조하게 된다. 다음에는 15라는 값을 가진 int 객체자 저장된 주소 0x1234(예를 들어서)를 참조하게 된다. 즉, 10이 저장된 주소 0x1000에 존재하는 int 객체의 값이 바뀌는 것이 아니라 15라는 값을 가진 .. 2023. 4. 3. [Python] 변수와 메모리 #1 파이썬에 대한 기본적인 이해를 위해 작성했습니다 다음 블로그를 참고했습니다. https://dc7303.github.io/python/2019/08/06/python-memory/ [Python] 파이썬의 메모리 관리 인스타그램이 GC를 사용하지 않은 뒤 성능이 10%정도 향상 됐다는 글을 봤습니다. GC가 어떻게 동작하는지 궁굼하기도 했고 평소 파이썬으로 프로그래밍 하는 걸 좋아하기 때문에 깊게 이해해보 dc7303.github.io #1 변수는 메모리 레퍼런스 누군가에게 편지를 보낼 때는 보통 편지에 주소를 적어야 한다. 그 주소는 세계 어딘가에 있는 특정 우체통과 일치해야 할 것이다. 특정 우체통의 주소를 써서 편지 내용을 우편함에 확실히 전달한다. 컴퓨터와 메모리도 이와 비슷하다. 데이터가 저장되.. 2023. 4. 3. [Python] Classes 파이썬에 대한 기본적인 이해를 위해 작성했습니다 __init__ class Rectangle: def __init__(self, width, height): self.width = width self.height = height __init__ 메서드에 두 번째 및 세 번째 인수로 전달되는 인수를 사용하여 Rectangle 클래스를 호출하여 인스턴스를 만든다. 첫 번째 인수(self)는 Python에 의해 자동으로 채워지며 생성되는 객체 그 자체를 의미한다. self를 사용하는 것은 단지 관례일 뿐, 어떤 이름을 지어도 상관없다. Instance method class Rectangle: def __init__(self, width, height): self.width = width self.height.. 2023. 4. 2. [Python] For loop 파이썬에 대한 기본적인 이해를 위해 작성했습니다 python의 for 반복문은 다음과 같이 작성된다. for item in iterable: # ... code ... 여기서 iterable이란 의미 그대로 반복할 수 있는 것이다. iterable을 정의하는 비순환 방식은 한 번에 하나씩 액세스 할 수 있는 항목의 모음이라고 생각하는 것이다. Python에서 iterable은 매우 구체적인 의미를 가진다. 한 번에 하나씩 멤버를 반환할 수 있는 객체를 뜻한다. 다음과 같은 것들이 있다 : list, strings, file objects... for문은 iterable을 반복하는 데 사용할 수 있다. for i in range(5): print(i) for x in [1, 2, 3]: print(x) f.. 2023. 4. 2. [Python] While loop 파이썬에 대한 기본적인 이해를 위해 작성했습니다 while 반복문은 지정된 조건이 충족되는 동안 코드 블록을 반복한다. 파이썬에서 while문의 특징은, 반복이 시작되기 전에 조건을 테스트한다는 것 즉, 코드 블록이 실행될 것이라는 보장이 없다. (한 번도 실행되지 않을 수 있다) 예를 들어서, javascript에서는 do while문을 사용하면 코드를 무조건 한번 실행하는 것을 보장해 준다. 만약, 코드블록을 무조건 한번 실행하려면 True를 사용하면 최소 한 번 이상 실행되는 것이 보장된다. min_length = 2 while True: name = input('이름을 입력하시오 :') if len(name) >= min_length and name.isprintable() and name.isa.. 2023. 4. 2. [Python] Function 파이썬에 대한 기본적인 이해를 위해 작성했습니다. Type annotations def func_multi(a: int, b:int): return a * b 데이터 유형을 강제하지 않는다! 단순히 외부 라이브러리 및 IDE에서 사용할 수 있는 메타데이터다. 함수는 정수가 객체인 것처럼 객체이며 정수가 할 수 있는 것처럼 변수에 할당될 수 있다. my_func = func_multi my_func(2, 3) 하지만, 함수는 반드시 항상 무언가를 반환해야 한다. 반환 값을 지정하지 않으면 Python은 자동으로 None 개체를 반환한다. def func_4(): # does something but does not return a value a = 2 res = func_4() print(res) # No.. 2023. 3. 29. 이전 1 2 다음