IT/파이썬 2021. 5. 20.
파이썬 - 함수 전달인수에 * 가 있다면 멀까?
아래 글 보다 더 잘 설명할 순 없다. 그냥 아래 글에 들어가셔용~~ https://sjquant.tistory.com/31?category=797018 파이썬에서 arguments로 *(별표)만 쓴 경우!? fastapi 의 코드를 보던 중 함수의 arguments 로 *만을 쓴 것을 발견했다. 난생 처음 본 표현법이라서 직접 테스트 해보며 뭔지 알아냈다. ...(생략) def get_param_sub_dependant( *, param: inspect.Parameter,.. sjquant.tistory.com *를 사용하면 *이후의 arguments들을 keyword arguments로 강제할 수 있다. 예를들어 아래와 같이 정의한 경우에는 recipient와 what을 positional argum..
IT/파이썬 2021. 5. 7.
jinja2 에서 문자열 변환 함수 - 파이썬 str() 함수 같은 것
요거요거 신경 쓰이게 많이 했다. 쉽다. 정답은 아주 쉽다. jinja2 에서 문자열로 바꾸려면 str() 이렇게 쓰는 게 아니라 {{ 변수 | str }} 혹은 {{ 변수 | string }} 으로 쓰면 된다. 이것 찾느라 고생이었다. 난 ObjectId 값을 바로 문자열과 비교하니깐 같은 값인데 같다고 안나오니 환장할 노릇. 알고 보니 ObjectId를 먼저 string 으로 바꾸고 비교해야 하네.. {% if pre_orderitem == (orderitem_from["id"] | string) %} 참조한 사이트는 바로 아래~~ webisfree.com/2019-02-06/jinja2%EC%97%90%EC%84%9C-%EC%88%AB%EC%9E%90-%EB%98%90%EB%8A%94-%EB%AC%..
IT/파이썬 2021. 4. 16.
예외를 직접 발생시키기 - raise Exception
설명 필요없고, 아래 글 참고. raise Exception 함수내에서 Exception 처리하면 함수 호출 한 곳에서는 Exception이 발생이 안되니까, 별도로 Exception 처리이후에도 호출 쪽에서 그 내용을 알아야 한다면 강제로 raise Exception을 이용해서 예외를 다시 전달해 주도록 하자. dojang.io/mod/page/view.php?id=2400 파이썬 코딩 도장: 38.3 예외 발생시키기 지금까지 숫자를 0으로 나눴을 때 에러, 리스트의 범위를 벗어난 인덱스에 접근했을 때 에러 등 파이썬에서 정해진 예외만 처리했습니다. 이번에는 우리가 직접 예외를 발생시켜 보겠습니다. 예 dojang.io def three_multiple(): x = int(input('3의 배수를 입력..
IT/파이썬 2021. 4. 15.
Windows 10 SDK 설치 - dll 오류 같은 것이 나면
(아직 작성중인 글로 해결중인 블로그 글입니다. 최종 업데이트 하면 이 메시지는 사라집니다.) 그냥 Windows 10 SDK 설치를 하세요. 여러모로 좋아요 Pyinstaller dll 오류가 많이 나서 찾아보니, 이런 답변이 많네요. api-ms-win-core- dll 같은 것들이 오류나 로그에 많이 나타나네요 윈도우 10에서는 WARNING: lib not found: api-ms-win-core-*.dll같은 에러가 출력되는데 이를 해결하기 위해 아래의 페이지를 참고하자. developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/ Windows 10 SDK - Windows app development Windows App Certifica..
IT/파이썬 2021. 4. 14.
파이썬 bytearray 배열 reset 하기
마이크로파이썬 micropython 의 세계로 들어가고 있다. 점점..하다보니 bytearray를 새로 만드는 것은 정말 자료도 많이 있는데, 이미 만들어진 bytearray를 다시 리셋 시켜주는 코드를 찾기가 쉽지 않네. 물론 가장 쉽게 할 수 있는 방법은 for i in range(len(your_array)): your_array[i] = 0 요거 더 잘하는 방법이 있을 것 같아서 찾아본 결과. $ ./upython MicroPython v1.8.1-39-gdb4addd on 2016-07-01; linux version Use Ctrl-D to exit, Ctrl-E for paste mode >>> a = bytearray(10) >>> id(a) 139728051341376 >>> a[:] =..
IT/파이썬 2021. 3. 19.
파이썬 pyside2 IP address 입력 창 만들기 - PyQt5 QLineEdit
파이썬 pyside2 IP address 입력 창 만들기 PyQT5, Pyside2를 이용한다면 아래 코드를 참고하면 IP address만 받는 입력 박스을 얻을 수 있다. 정규식과 Validator 를 활용하는 방법이 정말 좋아 보인다. ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" # Part of the regular expression # Regulare expression ipRegex = QRegExp("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$") ipValidator = QRegExpValidator(ipRegex, self) lineEdit = QLine..
IT/파이썬 2021. 3. 16.
파이썬 여러 widget 이 하나의 슬롯(callback/signal) 함수 사용하기
버튼 클릭이든, cellchanged 든 위젯을 쓰다보면 이벤트에 반응하는 함수를 구현해서 써야 한다. 버튼이 여러개 인데 거의 동일한 기능을 한다든지 혹은 위젯 배열로 구성했다던지 할 때 각각 signal 함수를 만들면 편리한 점도 있지만, 코드 낭비가 심하다는 기분이 많이 든다. 그래서 찾아보니 sender() 라는 함수가 있어서 동일한 함수를 써도 누가 보내는지 구분할 수 있도록 되어 있다. 이젠 거의 대부분 같은 기능을 하는 중복 함수라면 같이 사용하면 되겠다. 아래 예제 코드의 일부분은 QLineEdit 위젯에 글자를 쓰면 원하는 글자만 받도록 만드는 filter 기능을 넣고 싶을 때 사용한 코드이다. 물론 QLineEdit 가 배열형태로 많이 있는 페이지에서 동일한 필터를 사용하는 경우 사용하..
IT/파이썬 2021. 3. 10.
파이썬 변수 할당시 메모리 복사? 참조? copy deepcopy slicing
항상 궁금하던 건데, 파이썬은 막쓰기 좋은데 불안해~~~ 일단 변수에 다른 변수를 대입하는 형태로 하면 기본적으로는 포인터 교환처럼 같은 곳을 가리키는 포인터 값을 공유하는 느낌. from docs.python.org/ko/3/library/copy.html 파이썬에서 대입문은 객체를 복사하지 않고, 대상과 객체 사이에 바인딩을 만듭니다.가변(mutable) 컬렉션 또는 가변(mutable) 항목들을 포함한 컬렉션의 경우때로 컬렉션을 변경하지 않고 사본을 변경하기 위해 복사가 필요합니다. 요상하게 2가지 타입이 있어서 동작이 다르게 된다고 하니 그게 좀 문제 mutable , immutable 대충 내가 이해하기 위해 적어논 원칙, mutable 은 그냥 복사한 대로 그대로 사용만 되고, (즉 문자열같은..
IT/파이썬 2021. 3. 2.
파이썬 getattr 함수란? - 문자열 변수값과 동일한 객체 속성 불러오기
코드에서 getattr 이 있어서 간단하게 찾아봄 결론적으로 getattr(object, attr) 와 실제 object.attr 로 부르는 것이 동일하다는 뜻 For example, getattr(x, 'foobar') is equivalent to x.foobar. docs.python.org/3/library/functions.html#getattr Built-in Functions — Python 3.9.2 documentation Built-in Functions The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabe..
IT/파이썬 2021. 2. 27.
파이썬 pyside2 layout에 버튼, 라벨 위젯 추가시에 쓰는 함수
파이썬 pyside2 layout에 버튼, 라벨 위젯 추가시에 쓰는 함수 보통은 그냥 addWidget 을 써버리는데, 이게 추가하는 순서대로 놓아지니깐, 나중에 뒤에 추가하는 것을 앞으로 정렬하고 싶을때 또 인덱스를 찾아서 지우고 삽입하는 과정을 해야 하는 것으로 레퍼런스가 많이 되어 있다. 그냥 런타임에 바뀌는 것이 아니라면, 원하는 순서대로 자기가 넣을 수 있도로고 addWidget 대신에 insertWidget 함수를 사용하면 편리하다. 아래처럼 말이다. # 원래코드 # self.ui.horizontalLayout_5.addWidget(self.ui.btn_search) # index 정보를 넣을 수 있는 insertWidget 사용한 코드 self.ui.horizontalLayout_5.inse..
IT/파이썬 2021. 2. 26.
파이썬 pyside2 버튼 글자 왼쪽 정렬
pyside2 pyqt5에서 QPushButton에 이미지도 넣고 글자도 넣고, 왼쪽으로 정렬하고자 한다면, 아래 그림처럼 (qpushbutton icon left alignment text left alignment) 간단하게 스타일시트 하나 적용하면 된다. 버튼이름.setStyleSheet("QPushButton { text-align: left; }") 추가로, 아래 내용도 넣어 주면 좋을 듯 background-position: left; background-repeat: no-reperat; 이글은 질문에서 답을 찾아온 것입니다. 아래 질문은 더 어려운걸 요구하셔서 ㅋㅋ 이미지는 왼쪽 정렬, 글자는 가운데 정렬 머 우리는 간단하게 통일하자고~~ stackoverflow.com/questions/..
IT/파이썬 2021. 2. 24.
파이썬 pyside2 QSplitter 한쪽은 fix 한쪽은 expand 되도록 수정하기
QSplitter 를 하나 놓아서, 아래 그림의 1, 2번 프레임들이 자유롭게 사이즈를 조정할 수 있게 구성했다. 앗 그런데, 창을 키우니깐 비슷한 비율로 크기가 커지는게 아닌가? 나는 1번창은 조정한 그대로 두고, 창 사이즈가 변경되면 2번만 조정되도록 하고 싶은데.. 보통의 layout 처럼 Qt Designer 상에서 QSplitter 속성에 layoutStretch 를 조정하는 부분이 없어 잠시 당황. (아래아래 그림 참고) 결국 코드로 그것을 구현할 수 밖엔 없었다..(적어도 내가 아는 범위에서는 ㅋㅋ) 코드는 아래와 같다. splitter인스턴스이름.setStretchFactor( 0, 0 ) splitter인스턴스이름.setStretchFactor( 1, 1 ) 앞에 인자는 인덱스고, 뒤에 ..