반응형

DateTime 모듈

Python DateTime 모듈은 날짜 및 시간 유형의 데이터를 저장하는 데 사용됩니다. DateTime 모듈을 사용하여 객체를 생성할 수 있으며, 객체는 연, , , , , 초와 같은 날짜-시간 정보에 액세스하는 데 사용할 수 있습니다.

 

다음 스크립트는 datetime 모듈의 datetime 클래스에서 now() 메서드를 사용하여 시스템의 현재 날짜와 시간을 포함하는 datetime 객체를 반환합니다. 현재 시간을 문자열 형식으로 표시하려면 datetime 객체에서 ctime() 메서드를 호출해야 합니다.

 

import datetime

 

datetime_now = datetime.datetime.now()

 

print(datetime_now)

print(datetime_now.ctime())

 

Output:

2022-02-21 00:36:17.671414

Mon Feb 21 00:36:17 2022

 

datetime 클래스의 모든 속성을 보려면 아래와 같이 마지막 스크립트에서 생성된 datetime 객체를 dir() 메서드에 전달하면 됩니다.

 

print(dir(datetime_now))

 

Output:

['__add__', '__class__', '__delattr__', '__dir__', '__doc__', … , 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

 

출력에서 datetime 객체를 사용하여 연도, 요일, , 타임스탬프, , , 마이크로초 등과 같은 날짜에 대한 다양한 정보를 저장할 수 있음을 알 수 있습니다.

 

이제 두 날짜 사이의 초 카운트를 구해 보겠습니다. 그렇게 하려면 하나의 datetime 객체를 선언하고 차이를 구하고자 하는 datetime 객체를 선언한 후 두 객체를 빼면 됩니다. 다음으로 빼기의 결과로 반환된 객체에서 total_seconds() 메서드를 호출합니다.

 

import datetime

 

date1 = datetime.datetime.now()

date2 = datetime.datetime(1990, 10, 10)

 

date_dif = date1 - date2

print(date_dif.days)

print(date_dif.total_seconds())

 

Output:

11457

989887451.932207

 

초 수를 3,600으로 나누면 총 시간을 얻을 수 있습니다. 그리고 총 일수를 얻으려면 초 수를 86,400으로 나눕니다.

 

datetime 모듈의 time() 메서드

datetime 모듈의 time 객체를 사용하여 독점적으로 시간으로 작업할 수 있습니다.

다음 스크립트는 새 시간 객체를 만든 다음 객체 유형과 해당 속성 및 메서드를 출력합니다.

 

import datetime

 

new_time = datetime.time()

 

print(type(new_time))

print(dir(new_time))

 

Output:

<class 'datetime.time'>

['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', … , 'second', 'strftime', 'tzinfo', 'tzname', 'utcoffset']

 

다음 스크립트는 시간 값이 3시간 30분인 시간 개체를 만듭니다. 다음으로 시, , 초 및 마이크로초 속성 값이 표시됩니다.

 

import datetime

 

new_time = datetime.time(3, 30)

print(new_time.hour)

print(new_time.minute)

print(new_time.second)

print(new_time.microsecond)

 

Output:

3

30

0

0

 

replace() 함수를 사용하여 시, 분 또는 초 값을 바꿀 수도 있습니다.

 

다음 스크립트는 replace() 함수를 사용하여 시간 개체의 시간 값을 바꿉니다.

 

import datetime

 

new_time = datetime.time(3, 30)

print(new_time.hour)

 

new_time = new_time.replace(hour = 7)

print(new_time.hour)

 

Output:

7

 

datetime 모듈의 date()

다음 스크립트와 같이 시간 정보 없이 날짜 정보만 저장하는 객체를 생성할 수도 있습니다.

 

import datetime

 

new_date = datetime.date(2022, 2, 21)

print(new_date.ctime())

 

Output:

Mon Feb 21 00:00:00 2022

 

다음 스크립트는 날짜 개체의 속성과 기능을 출력합니다.

 

import datetime

 

new_date = datetime.date(2022, 2, 21)

print(dir(new_date))

 

Output:

['__add__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', … , 'today', 'toordinal', 'weekday', 'year']

 

마지막으로, replace() 함수를 사용하여 날짜 객체의 일, 월 및 기타 속성을 바꿀 수도 있습니다.

 

다음 스크립트는 날짜 개체의 날짜를 바꿉니다.

 

import datetime

 

new_date = datetime.date(2022, 2, 21)

print(new_date.ctime())

 

new_date = new_date.replace(day = 20)

print(new_date.ctime())

 

Output:

Mon Feb 21 00:00:00 2022

Sun Feb 20 00:00:00 2022

 

Math 모듈

Python Math 모듈은 다양한 유형의 수학 연산을 수행하는 데 사용됩니다.

다음 스크립트는 radians() 함수를 사용하여 각도를 도에서 라디안으로 변환합니다.

 

import math

 

angle = math.radians(90)

print(angle)

 

Output:

1.5707963267948966

 

다음 스크립트는 각도의 사인, 코사인 및 탄젠트 값을 찾습니다. 각도 값은 각각 sin(), cos() tan() 함수에 라디안 단위로 전달됩니다.

 

import math

 

angle = math.radians(90)

print(math.sin(angle))

print(math.cos(angle))

print(math.tan(angle))

 

Output:

1.0

6.123233995736766e-17

1.633123935319537e+16

 

Math 모듈의 pow() 메서드를 사용하여 정수를 다른 정수의 거듭제곱으로 올릴 수 있습니다.

다음 스크립트는 정수 4 5의 거듭제곱으로 올릴 때 결과를 인쇄합니다.

 

import math

 

print(math.pow(4, 5))

 

Output:

1024.0

 

유사하게, 아래와 같이 sqrt() 메서드를 사용하여 정수의 제곱근을 찾을 수 있습니다.

 

import math

 

print(math.sqrt(100))

 

Output:

10.0

 

다음 스크립트와 같이 log() log10() 함수를 사용하여 밑이 10인 자연 로그 및 로그를 계산할 수도 있습니다.

 

import math

 

print(math.log(100))

print(math.log10(100))

 

Output:

4.605170185988092

2.0

 

Random 모듈

Python Random 모듈은 난수 생성 및 목록에서 임의 값 선택과 같은 작업을 수행하는 데 사용됩니다.

0 1 사이의 난수를 생성하려면 다음 스크립트와 같이 random 모듈에서 random() 함수를 호출하기만 하면 됩니다.

 

import random

 

print(random.random())

 

Output:

0.7293231179114905

 

특정 범위 내에서 임의의 정수를 생성하려면 randint() 함수를 사용할 수 있습니다. 하한과 상한을 매개변수 값으로 전달해야 합니다.

 

다음 스크립트는 0에서 50 사이의 임의의 정수 세 개를 생성합니다.

 

import random

 

print(random.randint(0, 50))

print(random.randint(0, 50))

 

Output:

42

28

 

randrange() 함수를 사용하여 두 값 범위 사이에 임의의 정수를 생성할 수도 있습니다. 그러나 randrange() 함수를 사용하면 임의의 정수 생성 단계를 지정할 수도 있습니다.

 

다음 스크립트에서 randrange() 함수는 먼저 0 1 사이의 임의의 정수를 생성합니다. 두 번째 줄에서 randrange() 함수를 사용하여 3의 배수인 임의의 숫자가 생성됩니다. 마지막으로 5의 배수인 임의의 정수가 생성됩니다.

 

import random

 

print(random.randrange(0, 50))

print(random.randrange(0, 50, 3))

print(random.randrange(0, 50, 5))

 

Output:

25

6

20

 

random 모듈의 choice() 함수를 사용하여 목록에서 무작위로 항목을 선택할 수도 있습니다.

 

import random

 

cars = [4, 43, 10, 55, 10, 3]

print(random.choice(cars))

 

Output:

10

 

마지막으로 목록 내 항목을 무작위로 섞기 위해 Random 모듈에서 shuffle() 함수를 사용할 수 있습니다..

 

import random

 

listdata = ["a", "b", "c"]

print(listdata)

 

random.shuffle(listdata)

print(listdata)

 

Output:

['a', 'b', 'c']

['b', 'a', 'c']

 

Python 스크립트의 실행 시간 찾기

실행 시간은 특정 코드 조각의 성능을 측정하기 위한 중요한 측정기준입니다.

Python에서 스크립트의 실행 시간을 찾는 세 가지 주요 방법이 있습니다.

시간 및 시간 모듈을 사용할 수 있습니다. Jupyter Notebook을 사용하는 경우 ##timeit 명령을 사용하여 스크립트의 실행 시간을 찾을 수도 있습니다.

 

피보나치 수의 값을 계산하는 두 개의 프로그램을 작성해 보겠습니다. 첫 번째 프로그램은 재귀 함수를 사용하고 두 번째 프로그램은 단순 for 루프를 사용합니다. 그런 다음 Python에서 서로 다른 접근 방식을 사용하여 두 프로그램의 실행 시간을 비교할 것입니다. 다음 스크립트는 재귀 함수를 사용하여 피보나치 수의 값을 계산하는 get_fib()라는 메서드를 정의합니다.

 

def get_fib(num):

  if num == 1 or num == 2:

    return 1

  else:

    return get_fib(num-1) + get_fib(num-2)

 

get_fib(20)

 

Output:

6765

 

다음 스크립트는 for 루프를 사용하여 피보나치 수의 값을 계산하는 get_fib2() 메서드를 정의합니다.

 

def get_fib2(num):

  if num == 1:

    return 0

 

  if num == 2:

    return 1

 

  num1 = 1

  num2 = 1

 

  for i in range(3, num+1):

    val = num1 + num2

    num1 = num2

    num2 = val

    

  return val

 

get_fib2(20)

 

Output:

6765

 

Time 모듈 사용

Python time 모듈은 Python 스크립트의 실행 시간을 계산할 수 있습니다. 이렇게 하려면 실행 시간을 측정하려는 스크립트 전후에 time() 메서드를 호출해야 합니다. 다음으로 스크립트 실행 후의 타임스탬프에서 스크립트 실행 전의 타임스탬프를 빼면 됩니다.

 

다음 스크립트는 피보나치 수열의 30번째 숫자를 계산하기 위한 get_fib() 함수의 실행 시간을 측정합니다.

 

import time

 

start_time = time.time()

get_fib(30)

end_time = time.time()

 

script_time = end_time - start_time

print(str(script_time))

 

Output:

0.3249504566192627

 

마찬가지로 다음 스크립트는 피보나치 수열의 30번째 숫자를 계산하기 위한 get_fib2() 함수의 실행 시간을 계산합니다.

 

import time

 

start_time = time.time()

get_fib2(30)

end_time = time.time()

 

script_time = end_time - start_time

print(str(script_time))

 

Output:

6.437301635742188e-05

 

비교 결과 for 루프를 사용하는 get_feb2() 함수가 재귀 함수를 사용하는 get_feb() 함수보다 피보나치 수열에서 30번째 숫자의 값을 계산하는 것이 더 빠릅니다.

반응형

+ Recent posts