Python全栈开发基础四
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈开发基础四相关的知识,希望对你有一定的参考价值。
Python全栈开发【基础四】 |
本节内容:
- 匿名函数(lambda)
- 函数式编程(map,filter,reduce)
- 文件处理
匿名函数 |
lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式
1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10))
匿名函数主要是和其它函数搭配使用
举例:
1 #########次方函数举例############ 2 res = map(lambda x:x**2,[1,5,7,4,8]) 3 for i in res: 4 print(i) 5 6 输出 7 1 8 25 9 49 10 16 11 64
高阶函数、函数式编程 |
高阶函数:
满足俩个特性任意一个即为高阶函数
1.函数的传入参数是一个函数名
2.函数的返回值是一个函数名
一、map函数
1 ###############map函数################ 2 array=[1,3,4,71,2] 3 4 ret=[] 5 for i in array: 6 ret.append(i**2) 7 print(ret) 8 9 #如果我们有一万个列表,那么你只能把上面的逻辑定义成函数 10 def map_test(array): 11 ret=[] 12 for i in array: 13 ret.append(i**2) 14 return ret 15 16 print(map_test(array)) 17 18 #如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样 19 def add_num(x): 20 return x+1 21 def map_test(func,array): 22 ret=[] 23 for i in array: 24 ret.append(func(i)) 25 return ret 26 27 print(map_test(add_num,array)) 28 #可以使用匿名函数 29 print(map_test(lambda x:x-1,array)) 30 31 32 #上面就是map函数的功能,map得到的结果是可迭代对象 33 print(map(lambda x:x-1,range(5)))
二、filter函数
真假值判断,如果为真就留下,为假则舍弃
1 filter(lambda x:x>22, [55,11,22,33,])
print(list(filter(lambda x:x>22, [55,11,22,33,])))
结果:[55, 33]
三、reduce函数
对可迭代对象中的指合并操作
1 from functools import reduce 2 #合并,得一个合并的结果 3 array_test=[1,2,3,4,5,6,7] 4 array=range(100) 5 6 #报错啊,res没有指定初始值 7 def reduce_test(func,array): 8 l=list(array) 9 for i in l: 10 res=func(res,i) 11 return res 12 13 # print(reduce_test(lambda x,y:x+y,array)) 14 15 #可以从列表左边弹出第一个值 16 def reduce_test(func,array): 17 l=list(array) 18 res=l.pop(0) 19 for i in l: 20 res=func(res,i) 21 return res 22 23 print(reduce_test(lambda x,y:x+y,array)) 24 25 #我们应该支持用户自己传入初始值 26 def reduce_test(func,array,init=None): 27 l=list(array) 28 if init is None: 29 res=l.pop(0) 30 else: 31 res=init 32 for i in l: 33 res=func(res,i) 34 return res 35 36 print(reduce_test(lambda x,y:x+y,array)) 37 print(reduce_test(lambda x,y:x+y,array,50))
文件处理 |
open函数,该函数用于文件处理
文件句柄 = open(‘文件路径‘,‘模式‘)
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
- r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
- w,只写模式【不可读;不存在则创建;存在则清空内容】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【可读; 不存在则创建;存在则只追加内容】
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
1 ####### r 读 ####### 2 3 f = open(‘test.log‘,‘r‘,encoding=‘utf-8‘) 4 5 a = f.read() 6 7 print(a) 8 9 10 11 ###### w 写(会先清空!!!) ###### 12 13 f = open(‘test.log‘,‘w‘,encoding=‘utf-8‘) 14 15 a = f.write(‘car.\n索宁‘) 16 17 print(a) #返回字符 18 19 20 21 ####### a 追加(指针会先移动到最后) ######## 22 23 f = open(‘test.log‘,‘a‘,encoding=‘utf-8‘) 24 25 a = f.write(‘good\nboy‘) 26 27 print(a) #返回字符 28 29 30 31 ####### 读写 r+ ######## 32 33 f = open(‘test.log‘,‘r+‘,encoding=‘utf-8‘) 34 35 a = f.read() 36 37 print(a) 38 39 f.write(‘ocean‘) 40 41 42 43 ##### 写读 w+(会先清空!!!) ###### 44 45 f = open(‘test.log‘,‘w+‘,encoding=‘utf-8‘) 46 47 a = f.read() 48 49 print(a) 50 51 f.write(‘ocean‘) 52 53 54 55 ######## 写读 a+(指针先移到最后) ######### 56 57 f = open(‘test.log‘,‘a+‘,encoding=‘utf-8‘) 58 59 f.seek(0) #指针位置调为0 60 61 a = f.read() 62 63 print(a) 64 65 b = f.write(‘ocean‘) 66 67 print(b) 68 69 70 71 ####### rb ######### 72 73 f = open(‘test.log‘,‘rb‘) 74 75 a = f.read() 76 77 print(str(a,encoding=‘utf-8‘)) 78 79 80 81 # ######## ab ######### 82 83 f = open(‘test.log‘,‘ab‘) 84 85 f.write(bytes(‘老男人\n‘,encoding=‘utf-8‘)) 86 87 f.write(b‘oldman‘) 88 89 #结果: 90 #老男人 91 #oldman 92 93 94 ##### 关闭文件 ###### 95 96 f.close() 97 98 99 100 ##### 内存刷到硬盘 ##### 101 102 f.flush() 103 104 105 106 ##### 获取指针位置 ##### 107 108 f.tell() 109 110 111 112 ##### 指定文件中指针位置 ##### 113 114 f.seek(0) 115 116 117 ###### 读取全部内容(如果设置了size,就读取size字节) ###### 118 119 f.read() 120 121 f.read(9) 122 123 124 125 ###### 读取一行 ##### 126 127 f.readline() 128 129 130 131 ##### 读到的每一行内容作为列表的一个元素 ##### 132 133 f.readlines()
以上是关于Python全栈开发基础四的主要内容,如果未能解决你的问题,请参考以下文章