본문 바로가기
반응형

파이썬/기초문법19

Python 클래스에 대해 1 함수형 프로그래밍이 인기를 얻고 있지만 여전히 클래스 기반 언어는 강력하다고 생각합니다. 다만 객체지향의 문제점으로는 프로그램의 규모가 커지고 참여하는 사람들이 많을수록 소스가 스파게티마냥 꼬이기 쉬워져 객체 간 책임/역할을 나누기가 모호해지면서 점점 왜 이렇게 한 클래스에서 하는 일이 많아지지.. 뭐하러 상속했지? 하면서 이게 객체지향인가 싶어지는 경우가 많은 것 같습니다. 그럼에도 객체지향은 현실로 넘어 우리의 상상을 구현할 수 있다는 점에서 매력적이고 강력한 것 같습니다. 문/이과를 넘어 요즘 'Python 쉽다. Python 배워라' 하는 말이 많은데 이 Python도 클래스 기반 언어입니다. 클래스는 무엇일까요? 클래스는 설계도라고 생각할 수 있습니다. Python에서 클래스를 만드는 방법은 다.. 2020. 3. 15.
Python Exception 발생시 해당 소스, 라인 출력하기 Python Exception 발생시 해당 소스, 라인 출력하기 예외처리(try-except)를 하지 않고 에러가 발생하는 경우에는 어느 라인이 문제가 되었는지 바로 나옵니다. 하지만 예외처리를 핸들링한 경우 에러는 처리하되 어디서 문제가 되었는지는 찾기 어려울 수도 있습니다. 예를 들어 아래 소스의 경우는 누가 봐도 try에서 실행하는 4/0 이 부분이 문제가 됩니다. try: if 4/0: print('success') else: print('fail') except Exception as e: print(e) # division by zero 하지만 프로그램이 다른 프로그램을 호출하는 경우 또는 한 프로그램이 몇 천 라인이 넘는 경우에는 위처럼 직관적으로 저기가 문제다. 라고 찾기 어려울 수도 있습.. 2020. 3. 3.
Python Map에 대한 이해 Python 내장 함수인 map은 리스트의 원소마다 특정한 함수를 적용시키는 역할을 합니다. 먼저 map 사용 없이 리스트의 모든 원소를 두배로 만들어보겠습니다. a = [1,2,3,4,5] for idx, val in enumerate(a): a[idx]*=2 print(a) # [2, 4, 6, 8, 10] 반복문 for를 사용하여 리스트의 원소에 하나씩 접근해 2를 곱해주고 다시 저장하는 모습입니다. 하지만 이렇게 코드를 만들면 흔히들 Python답지 못한 코드라고 합니다. 저것도 하나의 방법이긴하지만 더 간단하고 직관적인 방법이 있기 때문에 그렇습니다. 다음은 map을 사용하여 동일하게 원소마다 2를 곱해보겠습니다. 이를 위해서는 위에서 말한 특정 함수(Input마다 2를 곱해주는 함수)가 필요합.. 2020. 2. 14.
Python ==과 is의 차이 Python에서 ==과 is은 비슷해보이지만 다른 의미를 가지고 있습니다. 결론부터 이야기하면 ==은 객체가 가지고 있는 값 비교이고 is은 객체가 같은지를 비교하는 것입니다. 예를 들어보겠습니다. str1 = 'test' str2 = 'test' print(str1 == str2) # true print(str1 is str2) # true str1,str2은 둘다 'test'라는 값을 가지고 있는 str를 참조하고 있고 어쨌던 간에 ==은 값을 비교한다고 했으니 str1 == str2은 true가 맞습니다. 그럼 str1 is str2은 왜 true일까요? 그건 str1와 str2이 값만 같은게 아니라 아예 동일한 str 객체이기 때문입니다. 내장함수 id()를 이용해 주소를 확인해보겠습니다. str.. 2020. 2. 12.
Relative imports in Python 3 https://stackoverflow.com/questions/16981921/relative-imports-in-python-3 Relative imports in Python 3 I want to import a function from another file in the same directory. Sometimes it works for me with from .mymodule import myfunction but sometimes I get a: SystemError: Parent module '' not loaded, stackoverflow.com 2020. 2. 2.
반응형