Programming Language/Python3
-
Python3 with catchProgramming Language/Python3 2021. 10. 25. 19:01
with statement python에서 with문을 사용하는 것은 파일을 읽을 때, 장점이 있다. with open("./note.txt") as f: text = f.read() # f.close() with문이 종료할 때 별도로 .close()를 하지 않아도 종료해주기 때문에 안전하게 파일에 접근할 수 있다. 그렇다면 내 생각엔 with문으로 파일을 읽는 동안 발생하는 에러에 대해서 with except문같은 구문이 있지 않을까 생각했다. 결론 결론부터 말하면, 그러한 문법은 존재하지 않았다. 아래의 답변은 with문을 try로 감싸거나, 파일을 열 때 try로 감싸고 그 후 에러가 없는 경우 with를 쓰는 코드를 보여주고 있다. try-with from __future__ import with..
-
"private" in pythonProgramming Language/Python3 2021. 10. 25. 18:56
inheritance-of-private-and-protected-methods-in-python TL;DR python은 private이 존재하지 않습니다. 하지만 name mangling으로 private 효과를 만들 수 있습니다. 하지만 그것이 private이라는 의미는 아닙니다. (마찬가지로 protected도 없어요.) Question class Parent(object): def _protected(self): pass def __private(self): pass class Child(Parent): def foo(self): self._protected() # This works def bar(self): self.__private() # This doesn't work, I get a A..
-
`pipenv`는 정말 좋다.Programming Language/Python3 2021. 10. 25. 18:49
이거 정말 좋아. 아주 좋아. Install 일단 설치부터 하고 시작하자. 어쨌든 당신은 pipenv를 쓰게 될 것이다. 이 글에서는 미안하지만 mac기반 컴퓨터에 대해서만 다룰 것 이다. 🙇🏻♂️ brew가 설치되어 있다는 가정하에 설치한다. # 무려 fomulae ! brew install pipenv Pipenv ? pip를 대신하는 패키지관리자라고 보면 될 것 같다. 좀 더 많은 기능을 제공하는 관리자이다. 사용법은 pip와 매우 흡사하다. 간단한 세팅을 통해 사용법을 익히면 좋을 것 같다. 빈 디렉토리를 생성하고 아래의 커맨드를 따라가보자. (이 빈 디렉토리를 pipenv-prac이라고 부르겠다. 같은 이름의 디렉토리를 생성하는 것은 아래의 설명을 따라가기에 더 편할 것 이다.) # use i..
-
파이썬 내부 클래스에 대해Programming Language/Python3 2021. 10. 25. 18:42
이 글은 어디서 가져왔거나, 번역한 글인 것 같다. 그러나 작성한지 오래되어, 어디에서 가져왔는지 알 수가 없어 출처를 표기하지 못했다. 아마 영미권 작성자의 글 같은데, 한글을 모를거 같지만 심심한 사과를 전한다. 참고로 원본은 21년 5월에 작성되었다. 클래스 클래스에는 다양한 데이터 멤버와 함수가 포함되어 있으며 이러한 멤버에 액세스 할 수있는 개체를 만들 수 있습니다. 객체 지향 프로그래밍 언어 인 Python에는 이러한 여러 클래스의 객체가 많이 있습니다. 파이썬에는 클래스의 인스턴스가 생성 될 때마다 호출되는__init__라는 중요한 생성자가 있고, 클래스의 현재 인스턴스를 참조하는self 키워드도 있습니다. 중첩 클래스 (내부 클래스라고도 함)는 다른 클래스 내에 정의됩니다. 모든 객체 지향..
-
Pytest에 대해 알아보자.Programming Language/Python3 2021. 10. 25. 18:38
Pytest ! https://docs.pytest.org/en/6.2.x/ pytest는 유닛테스트 프레임워크이다. # content of test_sample.py def inc(x): return x + 1 def test_answer(): assert inc(3) == 5 위의 url에 들어가면 나와있는 예시이다. 파일명이 test_sample.py라는 점을 주목하자. pytest는 정해진 명명법에 따라 작성된 .py 스크립트에 대해 테스트를 시도한다. 또한 테스트 대상이 되는 함수, 클래스 등도 마찬가지로 정해진 이름 규칙이 있다. 위 코드의 경우 test_가 함수 이름 앞에 붙었다. $ pytest =========================== test session starts =====..
-
[번역] Pytest fixtureProgramming Language/Python3 2021. 10. 25. 18:31
pytest fixture 번역이 매끄럽지 못한 부분이 있을 수 있다. 양해바란다. pytest fixtures: explicit, modular, scalable Software test fixtures는 테스트 함수를 초기화합니다. 그들은 고정된 baseline을 제공하고, 그로 인해 신뢰되고 일관성있으며, 반복적인 테스트의 결과물을 얻을 수 있게 합니다. 초기화는 services, state 혹은 다른 환경 작업을 할 수 있습니다. 이것들은 arguments를 통해 테스트 함수에 의해 로 접근됩니다. 각각의 fixture 는 테스트 함수에 의해 이용되는데 이는 테스트 함수 정의의 전형적인 매개변수(앞으로 fixture 라고 부르겠습니다.)입니다. pytest fixture 는 xUnit 스타일의 s..
-
Should `import` statements always at the top?Programming Language/Python3 2021. 10. 25. 18:05
why import statement always at the top of code? should-import-statements-always-be-at-the-top-of-a-module 이 글은 스택오버플로우의 글을 가져온 것이다. Question PEP 8 states: Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants. However if the class/method/function that I am importing is only used in rare cases, surely it is more effic..
-
전역 상수는 나쁜 것일까?Programming Language/Python3 2021. 10. 25. 18:02
https://stackoverflow.com/questions/1263954/is-global-constants-an-anti-pattern 빌리 아일리쉬 짱 not that bad 전역 상수는 나쁘지 않다. Java 에서는 마치 python 의 스크립트에 선언된 전역변수처럼 설정하는 방법 # some_script.py VARIABLE_1 = 1 VARIABLE_2 = 'YES' ... 오직 상수에 접근하는 것만 허용한다. public final class C { // raise error private C() { throw new AssertionError("C is uninstantiable"); } public static final int OMGHAX = 0x539; }