第六节:函数(待补充)

编程理论:
面向过程
面向对象
函数式编程

函数是编程:
高阶函数:
1、函数接受的参数是一个函数名
2、返回值中包含函数

map 函数处理序列的每个元素,得到的结果是一个“列表”,该列表的元素及位置与原一样
filter 遍历序列中的每个元素,判断每个元素得到一个布尔值,如果是True就留下来
reduce 处理一个序列,把序列进行合并操作
函数的尾递归调用优化
在函数的最后一步进入递归

# 函数的递归
name = ["as","b","c","d"]
def ask_way(name):
name_len = len(name)
if name_len ==0:
return "没人知道"
p = name.pop()
if p == "as":
return p
return ask_way(name)
print(ask_way(name))

#map函数、filter函数、reduce函数
print(list(map(lambda x:x.upper(),msg)))
对可迭代对象中的每个数值进行计算等操作
print(list(filter(lambda n:not n.endswith('sb'),movie_people)))
过滤可迭代对象中计算结果为True的元素,生成列表
print(reduce_test(lambda x,y:x*y,num_l,100))
对可迭代对象中的依次两个数值进行运算,最后可以加上默认值

 

内置函数:
abs()      #取绝对值
all()    #测试所有元素是否都为True,否则False

all("0")   #测试结果为True

any()      #测试所有元素是否有一个是True,有一个是True结果就是Ture,否则False
ascii()     #返回一个字符串对象,如果参数是非ascii码字符,用\u,\U,\x 来替代
bin()    #返回整型的二进制表示
bool()    #布尔运算,然会True或者False
byte()    #返回一个新字节数组(不知道有啥用)
chr()   #用一个整数作参数,返回一个对应的字符

ord()     #十进制转换成8进制
dict()    #创建字典

>>>dict()                        # 创建空字典
{}
>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 
>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>>

 


dir()      #返回模块的属性列表。
divmod(a,b)     #接收两个数字类型(非复数)参数,返回一个包含商和余数的元组  在分页计算的地方用到
enumerate()  #将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
eval()      #1、提取字符串中的数据结构 2、执行字符串中的运算功能强大  例:a="{"cc":12}"  d = eval(a)  把字符串中的字典提取出来

floa()         #用于将整数和字符串转换成浮点数。
frozenset()     #创建一个冻结的集合,冻结后集合不能再添加或删除任何元素。     
hash()       # 1、不能反推hash值 2、hash值固定长度  应用于数字、字符串和对象,不能直接应用于 list、set、dictionary
hex()         #十进制转十六进制
oct()       #十进制转八进制
id()       #查看内存地址
isinstance(object,(类型1,类型2))    #判断数据类型是不是谁的对象  isinstance(1,int)返回Ture或则和False,类型可以是元组中的一个,也可以设置一个类型
locals()      #以字典的形式打印局部变量
globals()    #以字典的形式打印全局变量

zip(("a","b","c"),(1,2,3))  #拉链,传入的值是可迭代对象,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象

max()    #结合zip使用可以 判断字典中的数值的大小

1、max函数处理的可迭代对象,相当于一个for循环,循环取出每个元素进行比较。不同类型不能比较

2、每个元素之间比较,是从每个元素的第一个位置依次比较,如果第一个位置分出大小。后面的都不需要比较了,直接得出两个元素的大小

people=[
{'name':'alex','age':1000},
{'name':'wupei','age':10000},
{'name':'yuanhao','age':9000},
{'name':'linhaifeng','age':18},
]

print(max(people,key=lambda dic:dic['age'] ))

执行结果:{'name': 'wupei', 'age': 10000}

min()  #同上

oct()  #十进制转八进制

pow()  #pring(pow(3,3,2))   3**3 %2

reversed()  #反转列表的顺序  ,区别与方法reverse,注意

re = [1,2,3,4] 
print(list(reversed(re)))

round()  #四舍五入
slice() s1 = slice(3,5)  #切片
sorted()  #临时排序,用法类似max()
c=_import_(test)导入模块,用在模块名是字符串类型的时候
posted @ 2020-04-07 00:29  轰天雷  阅读(110)  评论(0编辑  收藏  举报