時間模塊 time
import time
#print(time.time())
# 輸出:1577364252.382716 [格林威治時間],時間戳
print(time.strftime("%Y-%m-%d %H:%M:%S"))
# 輸出時間:2019-12-26 20:55:32
# 結構化時間
print(time.localtime())
t=time.localtime() #所有數據都可以通過此處拿,這是Python中的時間
print(t.tm_year)
print(t.tm_mon)
時間轉換
# 數據庫存儲一個時間,把他還原成格式化時間
import time
a = 1888888888
# 先把這個時間戳轉換成結構化時間
t = time.localtime(a)
print(t)
# 輸出: time.struct_time(tm_year=2029, tm_mon=11, tm_mday=9, tm_hour=11, tm_min=21, tm_sec=28, tm_wday=4, tm_yday=313, tm_isdst=0)
# 把結構化時間轉化爲格式化時間
a = time.strftime("%Y-%m-%d %H:%M:%S" , t)
print(a)
# 輸出:2029-11-09 11:21:28
格式化時間轉時間戳
# 用戶輸入一個時間,轉化成時間戳
import time
user_time = input("請輸入時間: ")
str_time = time.strptime(user_time,"%Y-%m-%d %H:%M:%S")
# 轉化成時間戳
num = time.mktime(str_time)
print(num)
# 輸出:請輸入時間: 2029-11-09 11:21:28
# 1888888888.0
functools模塊
千萬別把新建的Python文件名寫成模塊名,我在這就把他寫成了functools.py,執行時總是失敗!提示重複調用!吻了好多大神才發現他是自己調用了自己
回憶裝飾器
# 回憶裝飾器
def wrapper(fn):
def inner(*args,**kwargs):
print("前")
ret = fn(*args,**kwargs )
print("後")
return ret
return inner
#@wrapper
def func():
print("嗯哼")
func()
print(func.__name__)
# 輸出
嗯哼
func
放開@wrapper
# 回憶裝飾器
def wrapper(fn):
def inner(*args,**kwargs):
print("前")
ret = fn(*args,**kwargs )
print("後")
return ret
return inner
@wrapper # func =wrapper(func)
def func():
print("嗯哼")
func()
print(func.__name__)
#輸出:
前
嗯哼
後
inner
此時,對於調用方來講,不知調用的是哪個函數,因爲函數名都被改變了
from functools import wraps
# 此函數可以改變一個函數的名字和註釋等
def wrapper(fn):
@wraps(fn) #此處的inner想僞裝成什麼,就寫什麼[上面函數傳入的變量]
def inner(*args,**kwargs):
print("前")
ret = fn(*args,**kwargs )
print("後")
return ret
return inner
@wrapper
def func():
print("嗯哼")
func()
print(func.__name__)
偏函數 partial
from functools import partial
#假設這一段是別人寫的代碼
def chi(zhushi,fushi):
print(zhushi,fushi)
chi("大米飯","辣雞爪")
chi("小米飯","辣雞爪")
chi("黃米飯","辣雞爪")
chi("黑米飯","辣雞爪")
chi("紫米飯","辣雞爪")
chi("糯米飯","辣雞爪")
# 此時,由於全部都是辣雞爪,可以直接將函數中的fushi="辣雞爪",但是由於函數是別人寫的代碼碰不到,此時可以用偏函數
chi2=partial(chi,fushi="辣雞爪") # [偏函數名] = partial([源函數名],[變量名]="值")
chi2("糯米飯")
# 輸出:糯米飯 辣雞爪
#什麼是偏函數? 固定函數中某些參數的值