日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...

發布時間:2025/4/16 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

為什么要學習python3?

原因:

1、學習一門語言能力

2、通過該語言能力完成測試自動化以及獨立完成自測框架知識

那么我要做什么呢?

1、每天花十個小時完成python3的學習

要在什么地方做呢?

深圳家里完成7天

那到底要怎么做呢?

完成基本的python3的基礎知識,從而再學習測試框架

總結:

1、讓我初步了解裝飾器、列表生成器、迭代器、內置方法詳解等內容

遺留問題:高級購物車代碼未寫

裝飾器:

定義:本質是函數,(裝飾其他函數)就是為其他函數添加附加功能<br></br>原則:<br></br>1、不能修改被裝飾的函數的源代碼<br></br>2、不能修改被裝飾的函數的調用方式<br></br><br></br>實現裝飾器知識儲備:<br></br>1、函數即“變量” (字符串的形式存放)<br></br>#匿名函數<br></br># calc = lambda x:x*3<br></br># print(calc(3))<br></br>#看書本圖<br></br>注意:<br></br>1)當一個字符串沒有被任何指向時(例:x和y 都不等于1,1會被python自動內存回收)<br></br>2)python函數都是 1、定義聲明 2、再調用 注(先調用后定義無效)<br></br><br></br>2、高階函數<br></br>1) 把一個函數名當做實參傳給另外一個函數(在不修改被裝飾函數源代碼的情況下為其添加功能)<br></br>2)返回值中包含函數名(不修改函數的調用方式)<br></br><br></br>3、嵌套函數<br></br><br></br>高階函數+嵌套函數 =》 裝飾器

![]()![]()```

1 import time

2

3 def timmer(func):

4 def warpper(*args,**kwargs):

5 start_time = time.time()

6 func()

7 stop_time = time.time()

8 print("the func run time is %s" %(stop_time-start_time))

9 return warpper()

10

11 @timmer

12 def test1():

13 time.sleep(3)

14 print("in the test1")

15

16 test1()

View Code

列表生成器:

1、生成器只有在調用時才會生成相應的數據
# 2、只記錄當前位置
# 3、只有一個next() 方法。,數據只能往前不能后退,只保留一個元素 next()

![]()![]()```

1 b = (i*2 for i in range(10)) # 最快,生成一個算法

2 for i in b: # 訪問了才會開始生成

3 print(i)

4

5 #其他方式

6 [i*2 for i in range(10)] # 直接生成全部

7 #print([i*2 for i in range(10)])

8

9

10 a = [] #最low

11 for i in range(10):

12 a.append(i*2)

13 print(a)

14

15

16 #yield的send用法

17 # f.send有三個作用或可稱為三個步驟

18 #1. 將'send value'賦值給ret(注意:不是賦值給i)

19 #2. 重新啟動生成器往下走

20 #3. 再執行一次next(f), 相當于函數又返回了一次值

View Code

迭代器:

#函數<br></br>isinstance() #判斷一個對象是否是Iterale 對象:<br></br>next()<br></br><br></br>#可以直接作用于for循環的對象統稱為 可迭代對象:判斷一個對象是否是Iterale<br></br>#可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator<br></br>#注意:有next()方法就叫迭代器,沒有就不是 用dir() 查看可用的方法<br></br><br></br><br></br># 凡是可作用于for循環的對象是Iterable類型(可迭代對象):<br></br># 凡是可作用于next()函數的對象都是Iterator類型(迭代器),它們表示一個惰性計算序列:<br></br># 集合數據類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象

內置方法詳解:

![]()![]()```

1 abs()

2 all() #判斷所有可迭代對象是否為真, 非0就是真

3 #print(all([0,-5,3]))

4 any() #任意一個數據為真都返回真

5 #print(any([0,-5,3]))

6 ascii() #返回一個表示對象的字符串

7 bin() # 返回一個整數 int 或者長整數 long int 的二進制表示,十進制轉二進制

8 bool() #判斷真假

9 bytearray() # 方法返回一個新字節數組。這個數組里的元素是可變的

10 bytes()

11 callable()

12 chr()

13 ord()

14 compile()

15 delattr() #

16 dict() #生成字典

17 enumerate()

18 eval() #字符串編譯字典,注:處理數據類型或加減乘除 ,有語句或者for循環只能用exec()

19 exec() #字符串轉字典 處理有語句或者for循環的

20 filter() #函數用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,如果要轉換為列表,可以使用 list() 來轉換

21 float() #浮點

22 format()

23 frozenset() #不可變列表,類似元組

24 getattr()

25 globals() #返回一個全局變量的字典,包括所有導入的變量

26 hash() #用于獲取取一個對象(字符串或者數值等)的哈希值 類似數據庫主鍵對應值

27 help() #查看幫助

28 hex() #將一個指定數字轉換為 16 進制數

29 input()

30 int()

31 isinstance()

32 issubclass()

33 iter() #迭代器

34 len() #字符長度

35 locals() #會以字典類型返回當前位置的全部局部變量

36 map() #會根據提供的函數對指定序列做映射,返回迭代器

37 max() #返回給定參數的最大值

38 min() #返回給定參數的最小值

39 next() #函數要和生成迭代器的 iter() 函數一起使用

40 object()

41 oct() #將一個整數轉換成 8 進制字符串,8 進制以 0o 作為前綴表示

42 open() #用于打開一個文件,并返回文件對象

43 ord()

44 pow() #返回 xy(x的y次方)的值

45 # math 模塊 pow() 方法的語法: math.pow(x, y)

46 # 內置的 pow()方法: pow(x, y)

47 print() #打印

48 range() #函數返回的是一個可迭代對象(類型是對象),而不是列表類型, 所以打印的時候不會打印列表

49 repr() #函數將對象轉化為供解釋器讀取的形式

50 reversed() #用于反向列表中元素

51 round() #返回浮點數 x 的四舍五入值

52 slice() #實現切片對象,主要用在切片操作函數里的參數傳遞

53 sorted() #對所有可迭代的對象進行排序操作 字典按可以按key或者vaual來排序

54 setattr() #對應函數 getattr(),用于設置屬性值,該屬性不一定是存在的

55 sum() #對序列進行求和計算

56 tuple() #函數將可迭代系列(如列表)轉換為元組

57 type() #只有第一個參數則返回對象的類型,三個參數返回新的類型對象

58 # isinstance() 與 type() 區別:

59 # type() 不會認為子類是一種父類類型,不考慮繼承關系。

60 # isinstance() 會認為子類是一種父類類型,考慮繼承關系。

61 # 如果要判斷兩個類型是否相同推薦使用 isinstance()

62 vars() #返回對象object的屬性和屬性值的字典對象

63 zip() #函數用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象,這樣做的好處是節約了不少的內存。

View Code

json序列化

![]()![]()```

1 #!/usr/bin/env python

2 # -*- coding: utf-8 -*-

3

4 #json序列化

5 import json,pickle

6 def sayhi(name):

7 print("hello,",name)

8

9 info = {

10 "name":"yao",

11 "age":22,

12 "func":sayhi

13

14 }

15

16 f= open("test.text","r")

17 f.write(json.dumps(info))

18 data = json.loads(f.read())

19 f.close()

20 print(data["age"])

View Code

json反序列化

![]()![]()```

1 #!/usr/bin/env python

2 # -- coding: utf-8 --

3 import pickle

4 def sayhi(name):

5 print("hello2222222,",name)

6 f= open("test.text","rb")

7

8 data = pickle.loads(f.read())

9 print(data"func")

View Code

總結

以上是生活随笔為你收集整理的python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。