打赏

Python基础(13)——函数式编程与内置函数

函数作用域

def test():
    pass
print(test)

如果只是打印函数名输出的结果是个内存地址,<function test at 0x0000013E0AB7C1E0>

def test():
    pass
print(test())

结果是None

多层嵌套的函数,主要看函数的内存 和返回值是什么,返回函数名实际是返回的内存地址

 

lambda匿名函数

普通函数返回的值如果返回多个值,那么是自动按元组形式返回的

lambda函数如果想返回多个值,需要lambda x,y,z:(x+1,y+1,z+1) 手动加上括号

lambda和普通函数一样,本身是个地址

函数式编程

比如学习英语,学习了单词,学习了语法,结果还是不会说,说的时候还要经过翻译经过语法拼接等,最后还是说不出来,正常情况下是顺口而说的,底层的东西是不经过思考的

编程也是一样,基础的东西是经过练习印在底层的,立马可用,脱口而出!

编程的方法论:

面向过程编程:按步骤按流程的编程,基本单位是函数

函数式编程:用函数来实现数学函数模型的方法,其中函数式编程内的变量不修改,直接return。 

  高阶函数:出入的参数是函数,或者返回的是个函数,就是多层次的函数就是高阶函数

  尾调用函数在最后一步的时候函数就结束了,所以递归函数可以优化成尾调用函数,这样就不用堆栈等待,函数执行速度更快

面向对象编程:

map函数

 map(func,array)处理多种函数下的列表参数(可迭代的参数),返回的是个可迭代的对象 object ,可用for来循环遍历,map对象是个迭代器指针类型,只能迭代一次,用后为空

map函数是高阶函数,是函数式编程。但是易读性差

map函数把可迭代的参数逐个放到func中处理,python2中map返回的是列表,3中返回的是可迭代对象,需要用list转换

map函数实现的是函数功能,处理的是列表中的每个元素,元素个数相同

filter函数

 filter(func,array)符合函数逻辑的列表中的元素,返回的是可迭代对象

是个筛选的功能。符合True逻辑的保留并返回

filter函数是对列表元素做判断筛选功能

reduce函数

需要导入模块  from functools import reduce

reduce(func,array) 按函数的要求压缩列表得到一个最终结果

大数据压缩reduce 最后剩下一个结果

 

内置函数

abs绝对值

all判断一个序列中BOLL值是否都为真,否则返回Flase

any与all相反,只要有一个真就为真

bin 10进制转2进制0b开头         hex  10-16进制  0x开头    oct  10转8进制  0o开头

bool 判断布尔值 ''空字符串、None、0为Flase

bytes 字节显示     ascii码不能编中文字符串

a = '你好啊'
b = bytes(a,encoding='utf-8')
print(b)
print(b.decode('utf-8'))

chr 显示ascii表里东西  chr(97)  输出a               

ord  显示字符在ascii码表里的数字

dir  显示某个对象下面有什么内容

divmod(10,3)   得到(3,1)   除3取余, 用来多个页面分页判断来用的比如搜索一个内容得到10个结果 每页显示3个结果,余1也要占一页来显示

eval  解析字符串中的数据结构,计算字符串中的算式直接得到结果

hash哈希加密,会生成一堆的数,可哈希的是变量,如果中途变量的值变了,那么哈希值也会改变,用来判断加密,或者传输安全

help显示具体解释

id 内存地址

isinstance(1,int)判断是否是什么数据类型 

globals 显示全局变量

locals 显示局部变量

 zip 传入两个序列,按一一对应关系形成数组  ; 按两个序列的最小个数那一个组合,多余的部分舍掉。比如把字典里的keys 和values 一起zip的到一一对应的元组

max 不仅仅可以判断一个序列中的最大值  包括字典,字符串等,不同的数据类型不能比较,比较是按每个元素的位比较,所以单个字典内可以结合zip来进行比较

  max(序列,key=lambda dic:dic['age'])     key方法是在内部的每个循环下的元素,这里是个字典

 min  同max

pow(x,y,z=None)    相当于 x 的y 次方    对z 取余数 z 是可选参数

reversed  序列 倒序

round 四舍五入

set 集合形式

slice 切片

sorted排序 , 也可以用高级用法的字典中使用   print(sorted(people,key=lambda dic:dic['age']))     和max  min 用法相同

sum 加

type 数据类型

vars 以字典形式查看方法  或者变量 ??

__import__   在字符串形式下的导入模块    因为import 不能导入字符串     ,其实是import的底层方法

 

posted on 2019-06-05 17:17  大有哥  阅读(155)  评论(0)    收藏  举报

导航