당당한 프로그래밍 19

[Python] 실수(float) 연산 후, 대소 비교

Python은 부동소수점 방식으로 표현하기 때문에, 실수 연산의 결과에 작은 오차가 생긴다(근사치를 사용) 일반적으로는 큰 문제가 없지만, 조건문을 사용할 때 아래와 같은 문제가 발생할 수 있다. x = 0.1 + 0.2 # x = 0.300000000000004 if x == 0.3: print("Same") else: print("Diff") # Diff # solution import sys small_val = sys.float_info.epsilon if abs(x) - 0.3 < small_val: print("Same") else: print("Diff") # Same 시스템에서 사용하는 작은 값을 하나 선언하고, 그 값을 이용해서 동일한지를 판단할 수 있다.

[리눅스] 설치된 패키지 버전 확인

설치된 package 목록 확인 pip freeze xxx@test:~/temp$ pip freeze appdirs==1.4.4 asn1crypto==0.24.0 backports.functools-lru-cache==1.6.4 configparser==4.0.2 contextlib2==0.6.0.post1 cryptography==2.1.4 cycler==0.10.0 distlib==0.3.1 enum34==1.1.6 filelock==3.0.12 ... tqdm==4.62.3 typing==3.7.4.3 urwid==2.1.2 virtualenv==20.0.26 zipp==1.2.0 package에 대한 자세한 정보는 pip show [package name] xxx@test:~/temp$ pip ..

[Python] 반복문 소요 시간 체크 (feat. tqdm)

tqdm은 반복 문의 진행 상황을 알려주는 파이썬 라이브러로 처리 속도, 남은 시간, 경과 시간 등을 알려준다. 설치는 pip install tqdm 명령어로 간단하게 설치할 수 있다. 예시) # test.py import time from tqdm import tqdm for i in tqdm(range(0,1000)): time.sleep(0.01) 0.01초 걸리는 작업을 1,000 번 반복하는 예시이다. ProgreeBar.......................반복한 횟수/총 횟수 [ 경과 시간 < 남은 시간, 초당 반복문 수행 횟수] 종종 오래 걸리는 작업을 돌려놓고, 언제까지 기다려야 하는지 궁금할 때 간단하고 유용하게 사용할 수 있다.

[Python] 파이썬 변수 반복 생성 (feat. for 문)

내장 함수 locals()와 globals()를 사용하면, 자동으로 변수 생성이 가능하다. 각 함수는 선언되어 있는 변수들을 저장하고 있는 Dict를 반환한다. 변수를 선언한다는 것은 locals() 혹은 globals() 가 return 하는 Dict에 새로운 Key와 Value를 추가한다는 것과 같은 의미로 볼 수 있다. 따라서 globals()[key] = value 를 하게 되면, global key = value 와 동일한 행위가 된다. global a a = 2 # globals() = {'a':2} globals()['b'] = 3 # globals() = {'a':2,'b:3'} 따라서, 아래와 같이 for문을 사용하여 복수 개의 변수를 쉽게 선언할 수 있다. ex) a_1 = 1, a_2..

[리눅스] 파일 여러 개 실행하기

# test_1.py import time for i in range(5): print("test_1") time.sleep(1) # test_2.py import time for i in range(5): print("test_2") time.sleep(1) 여러 개 파일을 순차적으로 실행할 때 ! python test_1.py ; python test_2.py """ test_1 test_1 test_1 test_1 test_1 test_2 test_2 test_2 test_2 test_2 """ python test_1.py && python test_2.py """ test_1 test_1 test_1 test_1 test_1 test_2 test_2 test_2 test_2 test_2 """ ..

[Python] *args 와 **kwargs

args는 ARGuments의 약자이고, kwargs는 KeyWordARGuments의 약자이다. python에서 *args 와 **kwargs는 함수에서 가변 인자를 받을 수 있도록 할 때, 사용한다. ( C언어의 포인터와는 전혀 무관한 개념이다 ) 일반적으로 함수를 선언할 때, 고정된 매개변수(parameter)를 작성하여 정의한다. def sum_numbers(a, b): sum_numbers = a + b return sum_numbers sum_numbers(1, 2) # 3 때에 따라서, 두 개의 숫자가 아니라 다양한 숫자의 합을 구하는 함수를 필요로 할 때가 있다. 이때, 함수가 가변 인자를 받을 수 있도록 *args 와 **kwargs를 사용할 수 있다. def sum_tuple(*args..