본문 바로가기

Programming/Python169

[ Python ] == , != 와 is, is not 의 차이점 파이썬으로 코드를 작성하다가 어떤 함수 a 의 리턴값과 None 타입을 비교하는 if문을 작성했다. 처음에는 아무 생각 없이 == 으로 작성했다가, 생각해보니까 PEP8 에 의하면 None 과의 비교는 is 가 적합할 것 같아서 급하게 수정했다. 근데 왜 바꿔야하는지, 더 나아가 == 이나 != 연산자가 이미 있는데 왜 is 와 is not이 있어야하는건지 궁금해서 좀 서칭을 해봤다. 우선 아래 코드를 실행해보자. 아주 간단하다. print(3 == 3.0) print(3 is 3.0) 실행 결과는 True 와 False. 분명 동일한 역할을 하는 연산자 같은데, 왜 두 개의 연산 결과가 다른 걸까? 일단 == 과 != 는 값 자체를 비교하고, is 와 is not은 객체를 비교한다. 3과 3.0은 어쨌.. 2021. 12. 13.
[ Python ] 파이썬 비동기 처리 | asyncio | 비동기란 무엇인가 | 비동기 예제 비동기 함수란? 비동기 함수에 대해 서술하기 전, 동기 함수의 개념부터 잡고 가야한다. 우리가 통상적으로 써왔던 함수가 동기 함수인데, def test(): print('1') print('2') print('3') def main(): test() main() 위 코드를 보면, main 함수는 test를 실행하고, 1,2,3 이 순서대로 출력된 이후 종료된다. main 함수는 test 함수가 종료될 때까지 기다리는 것이다. 너무 당연한 말 같다. 근데 만약, main 이 test 함수가 1,2,3을 출력하는 동안에 처리해야하는 일이 있다면 어떻게 해야할까? 예시는 이렇지만, 만약 엄청나게 많은 데이터를 출력해야하는 상황이라면? 마냥 test 함수가 종료되어 정상적으로 return 되기만을 기다리는 것은.. 2021. 12. 8.
[ Django ] GoormIDE 에서 Django를 사용할 때의 문제점 현재 로컬에서 사용하는 IDE 를 못쓰는 상황이어서, 어쩔 수 없이 브라우저 상에서도 IDE 를 사용할 수 있게 해주는 GoormIDE 에서 작업을 하고 있다. 여기는 이미 컨테이너를 만들때 django 를 선택할 수 있어서, 장고 설치가 필요없다. 이런 부분은 참 편리하다. sqlite3 으로 그냥 로컬에 들어있는 서버만 돌릴거라면 큰 문제는 없을 것이다. 하지만 외부 database (aws ec2 에 mysql 설치해서 사용하려 했음) 와 연결할 때는 문제가 발생한다. 데이터베이스 접속정보를 알맞게 설정해도 계속해서 에러가 나오고, 결국 최종적인 에러는 AttributeError: 'str' object has no attribute 'decode' 이런식으로 나올 것이다. 무슨 에러인지 몰라 구글.. 2021. 12. 6.
[ Error / 해결됨 ] AttributeError: 'str' object has no attribute 'decode' 역시 에러의 늪에서 헤엄치는 나... 만약 이 에러가 장고를 사용하고 있는데 나는 에러라면, 아래 두번째 방법을 보시길 바랍니다. # 방법 1. 찾아보니 h5py가 3.x.x 버전 일때 생기는 문제라고 한다. 바로 pip list 쳐서 확인해보니 ㅎㅎ... 그랬다. 다운그레이드 해주면 된다. pip install h5py==2.10.0 --force-reinstall 강제로 재설치해버리면 됩니다.... # 방법 2. 장고를 쓰고 있는데 이런 에러가 난다? 당신의 장고는 예전 버전일 가능성이 높습니다. older django version 에서 일어나는 이슈라서 아래 명령어로 장고를 새로 설치해주시면 됩니다. pip install django==3.0.7 참 편리하게도 예전에 설치된 장고는 알아서 지워지게.. 2021. 12. 6.