Programming Language
-
Closure, First Class ObjectProgramming Language/Python 2024. 4. 11. 22:27
https://test22.tistory.com/17 Nested function, Nonlocal, Global Nested function Nested function(중첩 함수)는 함수 안에 함수를 가리킨다. 즉, 다음과 같은 형태로 함수를 정의한다면 def outer_function(a): x=0 def inner_function(b): y=1 inner_function(0) outer_function에 감싸진 inner_func test22.tistory.com 이전에 중첩 함수에 대해 다뤘다. 이제 First Class Object(일급 객체)에 대한 개념을 배운다면 closure를 이해하고 사용할 수 있다. 이급 객체, 삼급 객체란 용어도 있으나 안 쓰인다고 한다. 초기에 일급 객체에 대한 ..
-
The Zen of PythonProgramming Language/Python 2024. 4. 2. 23:12
The Zen of Python은 Python의 선구자 Tim Peters가 Python을 설계할 때 내세운 원칙이라 한다. 여기서 zen은 불교적 의미로 '선(禪)'을 의미한다. 그 의미를 찾아보니 '삼문(三門)의 하나. 마음을 가다듬고 정신을 통일하여 무아정적(無我靜寂)의 경지에 몰입하는 일'이라고 한다. 여기서 무아정적의 뜻을 살펴보니 무아(無我)는 '만물에는 고정 불변하는 실체로서의 나〔實我〕가 없다'는 뜻이고 정적(靜寂)은 '고요하고 쓸쓸함'이라는 뜻이다. 불교의 무아를 찾아보면 좋을 것이다. 20개의 구절이 있었으나 현재는 19개 구절만이 기록돼 남아 있다고 한다. Beautiful is better than ugly. Explicit is better than implicit. Simple ..
-
Nested function, Nonlocal, GlobalProgramming Language/Python 2024. 4. 2. 21:45
Nested function Nested function(중첩 함수)는 함수 안에 함수를 가리킨다. 즉, 다음과 같은 형태로 함수를 정의한다면 def outer_function(a): x=0 def inner_function(b): y=1 inner_function(0) outer_function에 감싸진 inner_function을 가리켜 nested function라고 부른다. 이러한 중첩 함수는 outer_function 내에서만 다룰 수 있고 그 바깥에서는 호출할 수가 없다. 그렇기 때문에 함수 내부에서 간단하게 사용될 정도로 쓴다면 가독성을 좋게 만들 수 있다. 다만 중첩 함수의 코드가 길어진다면 가독성이 안 좋아질 수 있다. outer_function 바깥에서도 자주 사용될 수 있는 코드라면 ..
-
DocstringProgramming Language/Python 2023. 12. 14. 01:00
docstring은 코드 내에서 문서화 하기 위한 문자열 리터럴이다. module, class, function or method 을 문서화하는데 쓰이며 주석 같은 역할을 한다. ''' 또는 """ 로 열고 닫으면 되며 반드시 맨 첫 줄에 써야 한다. 다음과 같이 쓰면 된다. def f(): '''test''' a=1 f.__doc__ 'test' docstring 내용을 외부에서 확인하고 싶다면 __doc__를 통해 확인할 수 있다. docstring style도 여러가지가 있기 때문에 다음의 사이트에서 Python Docstring Formats 문단을 참고하면 된다. https://www.datacamp.com/tutorial/docstrings-python
-
string 함수 split(), split(' ') 차이점Programming Language/Python 2023. 10. 13. 17:34
python에서 string 내 공백 기준으로 구분할 때 split()을 쓰면서 가끔 예상과 다른 결과가 나올 때가 있었다. 이유를 찾아보니 split()과 split(' ')은 다른 기작으로 작동하고 있었기 때문이다. 아래의 예시와 같이 split()은 모든 공백을 지우면서 문자열을 구분했고 split(' ')은 인자로 주어진 1개의 공백을 기준으로 구분했다. 알고리즘 문제를 풀 때 무지성으로 공백을 지우다보면 split(' ')을 써야하는 순간에 split()만 써서 답이 틀릴 수 있으니 주의해야 한다. s = "w0\t\nw1 w2 w3 w4 w5 w6 \t \n" s.split() ['w0', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6'] s.split(' ') ['w0\t\nw..