日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python中da_python学习 da4

發(fā)布時(shí)間:2025/4/16 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中da_python学习 da4 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、裝飾器

##裝飾器:

#定義:本質(zhì)是函數(shù),(裝飾其他函數(shù)),就是為其他函數(shù)添加附加功能

#原則:1.不能修改被裝飾的函數(shù)的源代碼

# 2.不能修改被裝飾的函數(shù)的調(diào)用方式

# 裝飾器對(duì)被裝飾函數(shù)來(lái)說(shuō),是完全透明的。裝飾函數(shù)不知道裝飾器的存在。

###實(shí)現(xiàn)裝飾器知識(shí)儲(chǔ)備

#1.函數(shù)即“變量”

#2.高階函數(shù)

#3.嵌套函數(shù)

#高階函數(shù)+嵌套函數(shù)---》裝飾器

import time

def timmer(func):

def warpper(*args,**kwargs):

start_time = time.time()

func()

stop_time = time.time()

print('the func run time is {a}'.format(a=stop_time-start_time))

return warpper

@timmer

def test1():

time.sleep(3)

print('in the test1')

import time

def timer(func):

def deco(*args,**kwargs):

start_time = time.time()

# print(func)

func(*args,**kwargs) #run test1

stop_time = time.time()

print('the func time is {a}'.format(a=stop_time-start_time))

return deco

@timer # 等價(jià)于test1 = timer(test1) (相當(dāng)于把原來(lái)的test1給偷梁換柱為我們的timer(test1)了)

def test1():

time.sleep(1)

print('in the test1')

@timer #test2 = timer(test2) = deco test2(name) = deco(name)

def test2(name,age,):

print('test2:',name,age)

test1()

##(相當(dāng)于把原來(lái)的test1給偷梁換柱為我們的timer(test1)了)

##思考1.要想達(dá)到裝飾函數(shù)效果:即不改變調(diào)用方式,不改變函數(shù)源代碼,增加函數(shù)功能,那么

##思路必然是搞一個(gè)新的函數(shù),并且把函數(shù)地址賦給test1,即完成test1函數(shù)的偷梁換柱。

test2('alex',22) ##2.目的是增加函數(shù)功能,那么前提是保證原來(lái)函數(shù)功能,所以就要把test1函數(shù)地址作為實(shí)參

##傳遞給裝飾函數(shù),并且在裝飾函數(shù)中執(zhí)行test1. 此外,就是在裝飾函數(shù)中實(shí)現(xiàn)附加功能。

#####最后,要返回嵌套內(nèi)函數(shù)的地址,(外函數(shù)只是個(gè)形式,起到傳參作用),賦給test1,保證被

#####偷梁換柱后的test1,具有原功能和附加功能。

二、迭代器

# 我們已經(jīng)知道,可以直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種:

# 一類是集合數(shù)據(jù)類型,如list、tuple、dict、set、str等;

# 一類是generator,包括生成器和帶yield的generator function。

# 這些可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象:Iterable。

# 可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterable對(duì)象:

#*可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator。

#可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterator對(duì)象:

#生成器都是迭代器Iterator,但list、dict、str雖然是Iterable,卻不是迭代器Iterator。

#把list、dict、str等Iterable變成Iterator可以使用iter()函數(shù):

#range(10)是個(gè)迭代器

#for line in f 也是迭代器

from collections import Iterable

from collections import Iterator

print(isinstance([],Iterable))

print(isinstance([],Iterator))

a = [1,2,3]

b = iter(a)

print(b.__next__())

三、生成器

import time

def consumer(name):

print("%s 準(zhǔn)備吃包子啦!" %name)

while True:

baozi = yield

print("包子[%s]來(lái)了,被[%s]吃了!" %(baozi,name))

# c = consumer('llw') #產(chǎn)生一個(gè)生成器,不會(huì)執(zhí)行consumer里面語(yǔ)句

# c.__next__() #只是調(diào)用yield

# b1 = '韭菜餡'

# c.send(b1) #調(diào)用yield,并給yield傳值

def producer(name):

c = consumer('A')

c2 = consumer('B')

c.__next__()

c2.__next__()

print("老子開(kāi)始準(zhǔn)備做包子啦!")

for i in range(10):

time.sleep(1)

print("做了2個(gè)包子!")

c.send(i)

c2.send(i)

producer("alex")

四、匿名函數(shù)

#匿名函數(shù):函數(shù)即變量。沒(méi)有名字,就沒(méi)有門牌號(hào),就會(huì)被回收。

# (變量和函數(shù)均有內(nèi)存回收機(jī)制,當(dāng)沒(méi)有門牌號(hào)時(shí),內(nèi)存回收)

# calc = lambda x:x*3

# print(calc(3))

#

#

# def sayhi(n):

# print(n)

# sayhi(3)

#

# calc = (lambda n:print(n)) ##只能把簡(jiǎn)單函數(shù)搞成匿名函數(shù)

# calc(5)

#

# calc = lambda n:3 if n<4 else n ##三元組

五、內(nèi)置方法

#匿名函數(shù):函數(shù)即變量。沒(méi)有名字,就沒(méi)有門牌號(hào),就會(huì)被回收。

# (變量和函數(shù)均有內(nèi)存回收機(jī)制,當(dāng)沒(méi)有門牌號(hào)時(shí),內(nèi)存回收)

# calc = lambda x:x*3

# print(calc(3))

#

#

# def sayhi(n):

# print(n)

# sayhi(3)

#

# calc = (lambda n:print(n)) ##只能把簡(jiǎn)單函數(shù)搞成匿名函數(shù)

# calc(5)

#

# calc = lambda n:3 if n<4 else n ##三元組

總結(jié)

以上是生活随笔為你收集整理的python中da_python学习 da4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。