파이썬 3

if __name__ == '__main__': 이 뭔가요?

파이썬 코드들을 보다보면 아래와 같은 코드를 종종 볼 수 있습니다. if __name__ == '__main__': # something here 이 코드가 하는 일은 무엇일까요? 오늘은 이 코드의 작동 원리와 언제 사용하는지 알아보겠습니다. __name__ 은 무엇일까요? 먼저 첫번째 퍼즐 조각인 __name__이 무엇인지부터 알아보겠습니다. Python에는 미리 정의된 특수한 함수나 변수들이 있습니다. 함수는 __do()__ 같은 형태이고, 변수는 __val__ 같은 형태입니다. 이런 특수한 함수와 변수는 보통 Python 내부적으로 사용하기 위한 것들이라서 코딩 때 직접 사용할 일은 그다지 많지 않습니다. 그런데 __name__은 아주 유용한 특성이 있어서 일반 코딩 때도 곧잘 사용되곤 합니다. 좋..

Python 2023.01.15

Python Callable

callable은 무엇이지? Python에서 callable은 함수를 호출하듯이 호출할 수 있는 객체를 의미합니다. 프로그래밍 언어 용어에 대한 설명답게 뭔가 미묘하면서 깔끔하지 않은 느낌이 드는 문장이죠? "함수를 호출하듯이 호출한다"는 부분이 눈에 걸리지 않을까 합니다. 일반적인 프로그래밍 언어에서는 호출할 수 있는 것은 함수(또는 메소드) 뿐이기 때문입니다. 변수 a를 호출하세요. 클래스 Cat을 호출하세요. 이상하죠? 그럼 Python에는 함수 외에도 호출할 수 있는 무언가가 있다는 뜻일까요? 짧은 답은 "그렇다"입니다. 긴 답은 아래에서 차근차근 이야기해보겠습니다. callable() 함수 먼저 Python이 built-in으로 제공하는 callable() 함수를 살펴보겠습니다. callable..

Python 2022.07.11

알쏭달쏭 Python import - sys.path

Python으로 만들고 있는 프로그램이 커지기 시작하면 모듈화를 합니다. 이 기능, 저 기능을 모아서 하나의 파일로 합쳐서 모듈(*.py)로 만들지요. 모든 모듈들이 한 디렉터리에 있을 때는 아무 문제없이 행복합니다. 그러다가 조금 더 프로그램이 커지면 모듈들을 모아서 패키지(디렉터리)로 만들고 슬슬 문제가 시작됩니다. 멀쩡히 import 되던 모듈들이 찾을 수 없다며 import가 되지 않거나 , 엉뚱하게 동작하는 일들이 생기죠. 이것이 다 python의 sys.path 때문입니다. 1. sys.path 누구냐 넌 sys.path는 모듈을 import 할 때 모듈을 찾아야할 경로들을 저장해둔 list입니다. 예를 들어 sys.path가 ['directory_A', 'directory_B', 'direc..

Python 2020.05.15