Python-40章 模塊2-time-functools

時間模塊 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("糯米飯")
# 輸出:糯米飯 辣雞爪
#什麼是偏函數? 固定函數中某些參數的值
發佈了130 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章