Python
-
cPython [Deep Dive to Object] - 1Python 2021. 4. 21. 23:31
python에서 Cyclic GC가 어떻게 작동하지 알아보기 위해서 cpython repository를 fork해 놓았었다. 그 당시 깊이 이해하지 못해 별다른 소득이 없었는데(변명이지만, 프로젝트 때문에 정말 바빴다...), 이번 기회에 python에서 object가 무었인지 부터 시작해 깊게 알아볼 계획이다. python에서 object가 도대체 뭔지! 어떻게 관리되는지! 알아보자. 발단 '파이썬의 배열에 끊임없이 원소를 추가하면 어떻게될까?'라는 생각을 하다가 이 고민을 하기 시작하게 되었다. 처음 머릿속에 든 생각은 파이썬은 객체의 Virtual Memory Address를 id로 사용하고, 배열이 저장될 메모리를 재할당하면 id도 바뀌겠지? 라는 생각이었다. 그래서 아래와 같은 간단하고, 귀여운..
-
Python - Variable ScopePython 2021. 1. 6. 23:32
Variable Scope 파이썬의 변수는 해당 변수가 선언된 범위 내의 범위에서만 유효하다. 이를 Scope라고 부른다. Local Scope, Enclosed Scope, Global Scope 그리고 Built-in Scope 이렇게 네가지 종류의 Scope가 있다. 각각의 Scope들은 아래와 같은 범위를 가진다. 각각의 Scope들에 대해 알아보자. Local Scope Local Scope는 현재 컴퓨터가 실행중인 함수의 Scope이다. 변수를 찾을 때, 가장 먼저 해당 변수가 Local Scope에 존재하는지 확인한다. locals()로 현재 local variable을 확인할 수 있다. x = 1 def func(): x = 2 print(locals()) func() 위의 코드를 실행하면..
-
Python - Call by Object ReferencePython 2020. 12. 26. 02:34
Python에서의 'Call by Object Reference' 파이썬의 변수에 대해 공부하다가 함수 인수 전달 방식인 call by value call by reference call by object reference 에 대해 알게 되었다. 이들의 차이점에 대해 알아보자! Call by Value 함수에 인수를 전달하는 방식이다. 변수의 값을 복사해 함수의 인자로 전달한다. 따라서, 함수 내에서 전달된 인자를 조작해도 함수 외부의 변수에는 영향을 미치지 않는다. Call by Reference 함수에 인수를 전달하는 방식이다. Java 혹은 C언어의 포인터로 함수의 인자에 전달하는 방식이 이와 같은 방식이다. 변수가 가리키는 주소 값을 함수의 인자로 전달한다. 함수 내에서 전달된 인자를 조작하면, ..
-
Python - 함수에 배열을 인자로 전달할 때Python 2020. 12. 23. 17:35
함수에 배열을 전달할 때 무슨 일이 일어날까? 함수의 인자로 배열을 전달한 후에 배열에 5를 'append' 해보자. def append_item(arr_in_function): print('id : ', id(arr_in_function), 'before change in function : ',arr_in_function) arr.append(5) print('id : ', id(arr_in_function), 'after change in function : ',arr_in_function) arr = [1,2,3,4] print('id : ', id(arr), 'before function : ', arr) append_item(arr) print('id : ', id(arr), 'after fu..
-
Python?Python 2020. 12. 21. 21:31
왜? 작년 가을 교양 프로그래밍 수업을 들으며 Python을 처음으로 접하고, 3개월 전 부터 본격적으로 공부를 해왔다. 파이썬을 사용하며 더 깊이 알아보려 하고, 의문을 가졌던 적이 별로 없다. 나무 자르기(포스팅) 문제를 풀면서 파이썬에서 함수를 사용하는 경우에 속도가 더 빠른 경우를 접하게 되었다. 이 당시에는 단순히 백준 사이트의 문제라고 생각하고 넘어갔었다. 그런데, 오늘 함수를 사용했을 때, 더 빠른 상황을 다시 한 번 접하게 되었고 왜 이런 현상이 발생하는 것인지 굉장히 궁금해 졌다. 인터넷의 자료를 찾아봐도 시원하게 해결해 주는 곳이 없었기에, 파이썬을 기초부터 차근차근 다지며 알아가보려 한다. 수면 아래의 굉장히 거대한 빙산이 드러나는 느낌인데, 두려워하지 않고 오늘 부터 파해쳐 나가야겠..