PYTHON學習筆記03

2021-10-06 14:29:02 字數 4014 閱讀 1084

『』『

加入購物車,付款,修改收貨位址...

..裝飾器多用於判斷使用者的登入狀態

』『』

示例:

用函式a作為引數,函式b接收函式a作為引數,要有閉包的特點

def

test()

:print

('----test------'

)def

func

(f):

# f=test

print

(f) f(

)# 呼叫test

print

('--------->func'

)func(test)--

----

----

----

----

----

----

----

----

----

----

----

----

->--

--test---

----

----

----

>func

def

decorate

(func)

: a =

100def()

: func(

)print

('----------->刷漆'

)print

('--------->鋪地板'

,a)#使用裝飾器

@decorate

# house()被裝飾函式

# 將被裝飾函式作為引數傳給decorate

# 執行decorate函式

defhouse()

:print

('我是毛坯房---'

)house()-

----

----

----

----

----

----

----

----

----

----

----

----

-我是毛坯房---

----

----

--->刷漆--

----

--->鋪地板 100

import time

defdecorate

(func)

:def

(*args,

**kwargs)

:#傳可變引數,變成萬能的裝飾器

print

('正在校驗中...'

) time.sleep(2)

print

('校驗完畢...'

) func(

*args,

**kwargs)

@decorate

deff1

(n):

print

('-----f1-----'

,n)f1(5)

@decorate

deff2

(name,age=30)

:print

('-----f2-----'

,(name,age)

)f2(

'xixi'

,age=

30)

如果裝飾器是多層的,誰離函式最近就優先使用那個裝飾器

帶引數的裝飾器是三層的

def

outer

(a):

#第一場 負責接收裝飾器的引數

defdecorate

(func)

:#第二層 負責接收函式

def(

*args,

**kwargs)

:#第三層 負責接收函式的引數

func(

*args)

print

('--->鋪地磚{}塊'

.format

(a))

return decorate

@outer(10)

defhouse

(time)

:print

('我{}日期拿到房子的鑰匙,是毛坯房...'

.format

(time)

)house(

'2020-6-1')-

----

----

----

----

----

----

----

----

----

----

----

----

--我2020-6

-1日期拿到房子的鑰匙,是毛坯房...

--->鋪地磚10塊

import time

islogin =

false

# 預設沒有登入

deflogin()

: username =

input

('輸入使用者名稱:'

) password =

input

('輸入密碼:'

)if username ==

'admin'

and password ==

'123456'

:return

true

else

:return

false

# 定義裝飾器

deflogin_required

(func)

:def

(*args,

**kwargs)

:global islogin

print

('------付款-------'

)# 驗證使用者登入

if islogin:

func(

*args,

**kwargs)

else

:# 跳轉到登入頁面

print

('使用者未登入,請先登入...'

) islogin = login(

)print

('result'

,islogin)

@login_required

defpay

(money)

:print

('正在付款,付款金額是:{}元'

.format

(money)

)print

('付款中...'

) time.sleep(2)

print

('付款完成!!!'

)pay(

10000

)#第一次未登入,所以不能付款。返回true之後,在付款8000就能成功

pay(

8000)-

----

----

----

----

----

----

----

----

----

----

----

----

----

----付款---

----

使用者未登入,請先登入...

輸入使用者名稱:admin

輸入密碼:123456

result true--

----付款---

----

正在付款,付款金額是:8000元

付款中...

付款完成!!!

作用域–legb規則

l:local 本地 區域性變數

e:encloseing 巢狀

g:global 全域性

b:built-in 內建的

Python學習筆記03

1.變數的型別取決於後面的值 2.判斷變數的型別 number 10 print type number 3.變數的宣告 變數名 值 起變數名規則 不能數字開頭 有字母 數字 下劃線開頭 不能使用關鍵字 false none true and as assert async await break ...

python 學習筆記03

列表 元組 元組建立之後,不能修改 可以儲存不同型別的資料 info tuple zhangsan 18,1.75,zhangsan print info tuple 0 print info tuple.count zhangsan 格式化字串 拼接生成新的字串 print s 的年齡是 d 身高...

學習《流暢的Python學習》 筆記03

2.8.1 用bisect來搜尋 import bisect import sys haystack 1 4,5 6,8 12,15 20,21 23,23 26,29 30 needles 0 1,2 5,8 10,22 23,29 30,31 row fmt defdemo bisect fn ...