Real Python의 Intermediate and Advanced Features라는 재생목록을 보고 기억할 만한 내용을 정리한 것입니다. is와 ====는 두 객체의 값이 같은지 보고, is는 동일한 객체인지 본다.>>> a = [1, 2, 3]>>> b = a>>> a == bTrue>>> a is bTrue>>> c = [1, 2, 3]>>> a == cTrue>>> a is cFalse>>> unpacking operator*는 시퀀스를 요소를 하나씩 풀어서 전달한다. **는 딕셔너리의 키-밸류 쌍을 풀어서 전달한다.>>> l = [1, 3, 2, 4]>>> print(*l)1 3 2 4>>> d = {0: 'zero', 1: 'one', 2: 'two'}>>> print(*d)0 1 2>>>..
conda 사용법을 간단히 정리해보았다.이 글 작성에 도움 주신 코봉님께 감사 말씀 드립니다. conda create -n example : example이라는 이름의 가상환경을 만듦 : -n 대신 --name이라고 써도 됨 : 비어있는 가상환경이 만들어지며, 아무것도 - 파이썬도 - 설치되지 않음 conda create -n example python : 가상환경 만들면서 파이썬도 같이 설치 : 파이썬 외에도 pip, tk, sqlite 포함해서 10여 가지가 자동으로 설치됨 : 아래는 2024년 8월 20일 기준, python 설치 시 같이 설치되는 패키지 목록임The following NEW packages will be INSTALLED: bzip2 pkgs..
재밌는 글을 봤다. list.extend와 list.iadd는 표면적으로는 동일해 보인다. 그런데 함수 내에서 global 변수를 바꾸려고 하면 동작이 달라진다. 에러는 global 변수를 바꾸려고 했다는, 흔히 볼 수 있는 에러이다.문제는 왜 두 개가 다르냐는 것인데, x += something은 객체의 iadd 메서드를 호출하는 것인데, 사실 아래의 코드가 실행된다. x = x.__iadd__(something) 여기서 assignment가 문제가 된다. 흥미로운 점은, 아래 코드는 문제 없이 잘 돈다. 여기에는 assignment가 없기 때문이다. x += something은 __iadd__를 호출하고, __iadd__는 self를 반환하므로, x += something은 x의 객체가 바뀌..
파이썬에는 syntax sugar라는 게 있다. Syntactic sugar라고도 부른다.굳이굳이굳이 번역하자면 문법적 설탕이라고 부를 수 있겠지만,솔직히 끔찍한 번역이다. 파이썬의 문법을 엄밀히 따른다면 아래의 statement는 에러가 떠야 한다. a = 1c = b = a 기호 =(assignment)가 operator가 아니라 statement라서 반환값이 없기 때문이다. (참고) 하지만 에러가 발생하지 않는다. 파이썬에서는 위 statement를 아래와 같이 재해석하기 때문이다. temp = ac = tempb = temp 이걸 chained assignment라고 부른다. 참고로 왼쪽부터 대입한다. (참고) 비슷한 게 하나 더 있다. Chained comparison이다. 이름만 들어도 ..
파이썬에서 숫자는 chained comparison이 되는데 numpy.ndarray는 안된다. 게으른 파이썬 녹화하다가 즉흥적으로 궁금해져서 해봤는데 막혀서 당황했다. 의미적으로는 되어야 할 것 같은데 왜 막아놨지? 궁금해졌다. 챗gpt한테 물어봤으나 뻘소리만 해대길래 검색해봤다. 검색어는 "ndarray chained comparison". 어떤 stackoverflow의 답변을 요약해보면, • PEP 535에서 제안되었으나 연기되어 있는 상태임• 파이썬에서 아래 코드는2 • 아래와 같이 해석됨2 • 논리 연산자 and는 피연산자에 bool을 입힘• 그런데 ndarray는 요소가 2개 이상이면 bool을 입히지 못함 (왜 못하게 해놨지?) • 여튼 해결책으로 bitwise or인 &를 쓰..
수치해석 중간고사에 grading 함수 작성 문제를 출제했다. 그리고 assert를 이용해서 채점 코드를 만들었다. 그리고 문제가 발생했다.학생은 분명히 잘 풀었는데 실패라고 뜬다. 리스트를 수정하는 문제였는데, 나의 의도는 새로운 리스트를 만드는 것이었으나, 입력 리스트를 그대로 수정해서 반환하도록 제출한 학생이 있었다. 리스트 복사본이 문제인가 싶어서 온갖 수정을 가해봤으나 여전히 해결되지 않는다. 값을 하나하나 비교해보아도 분명히 문제가 없는데 자꾸 실패라고 뜬다. 한 시간을 삽질한 끝에 문제를 찾았다. numpy가 import 되지 않았었다.(...) 에러는 NameError였는데 Exception을 대충 썼더니 엉뚱한 결과를 보여주던 것이었다. 예외처리를 성실하게 하지 않으면 독이 될 수 있..
매트랩의 fprintf와 파이썬의 f-string 문법은 닮은 부분이 많다. 사실 거의 같다고 봐도 무방할 정도이다. f-string 문법이 제대로 정리된 페이지가 의외로 없는 듯하여, fprintf와 비교할 겸 만들어보았다. 아래에서 프롬프트가 >>인 것은 매트랩, >>>인 것은 파이썬이다. f-string 문법은 본 문서에 소개한 것 외에도 더 있는데, fprintf와 1:1로 매칭되는 것들만 본 문서에 정리하였다. 1. 그냥 출력 >> disp(256) 256 >>> print(256) 256 2. 정수 >> fprintf('%d\n', 256) %10진수 256 >> fprintf('%o\n', 256) %8진수 400 >> fprintf('%x\n', 256) %16진수 100 >>> print..
후... 힘들었습니다. - 게으른