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 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql查询filter_子查询包含o
- 下一篇: python structure_Git