07-08 函数式与内置函数

def test():
    print ('in the test1')
def test():
    print ('in the test')
    return test1
res=test()
print(res())

#result:
in the test 
in the test1
None

匿名函数

lambda x:x+1
def calc(x):
    return x+1

func=lambda x:x+1
print(func(10))

lambda x,y,z:(x+1,y+1,z+1)


函数式编程
三种编程方法论:面向过程 函数式 面向对象
函数式=编程语言定义的函数+数学意义的函数(最早出现)
不可变 不用变量保存状态 不修改变量

高阶函数:把函数当做参数传给另外一个函数
返回值中包含函数

尾调用 在函数最后一步调用另外一个函数

map函数
1

num_l=[1,2,3,5,9]
def map_test(array):
    ret=[]
    for i in num_l:
        ret.append(i**2)
    return ret
ret = map_test(num_l)    



2

def add_one(x):
    x=x+1
    return(x)

def map_test(func,array):
    ret=[]
    for i in num_l:
        res=func(i)
    res.append(res)
    return ret

print(map_test(add-one,num_l))

##filter函数
move_people=['sb_1','sb_2','sb_3','sb_4','sb_5']
def filter_test(array):
    ret=[]
    for p in array:
        if not p.startwith('sb'):
        ret.append(p)
    return ret
filter(func,array)
print(list(filter(lambe n:not n.endwith('sb'),move_people)))




reduce函数

from functools import reduce

num_l=[1,2,3,100]
def reduce_test(array)
    res=0
    for num in array:
        res+=num
    return res


def rudece_test(func,array,init=100):    #初始值100
    if init=None:
        pass
    else:
        res=init
    for num in aarray:
        res=func(res,num)
    return res


map 在原有数据基础处理,得到一个'列表',元素位置与原来相同
filter 列表中所有值筛选 最后得出一个
判断每个元素的布尔值,如果TRUE则留下来
reduce 处理一个序列 合并操作 得出结论

reduce 用法

    from functools import reduce
    num_l=[1,2,3,100]
    print(reduce(lambda x,y:x+y,num_l,1))
    print(reduce(lambda x,y:x+y,num_l))

内置函数:
abs:取绝对值
all:跟序列 序列中每一个元素取出做布尔运算
any:只要有一个是真值 返回TRUE
bin:把十进制转换为二进制
bool:空、none、0布尔值为FALSE
byres:把一个字符串转换为字节形式
chr:给数字 打印acrii表中对应
dir:查看对象的内置方法
divmod:divmod(10,3)10/3取余数
eval:把字典转换为字符串
  把字符串中数字运算出来
hash:可哈希的数据类型是不可变数据类型
  哈希是一种算法 得出一个哈希值
  不管传入参数多长 结果长度固定
  不可根据哈希值反推
help:查看方法的使用方式
hex:十进制转16进制
oct:十进制转八进制
isinstance:XX是不是XXX类型 返回布尔值
globals:打印全局变量
locals:打印局部变量
zip:如同拉链
  print(list(zip(('a','n','c'),(1,2,3))))
max:
 

 for item in zip (age_dic.value(),age_dic.keys()):
    print(item)
    print(list(max(zip(age_dic.calues(),age_dic.keys()))))
  #既有key又有value

l=[
    (5,'e'),
    (1,'b'),
    (3,'a'),
    ]
print(list(max(l)))
max('a100','b20','c60')#但不同类型数据不可比较

people=[
    {'name':'alex','age':1000},
    {'name':'AAA','age':100}
    {'name':'AA','age':10}
    {'name':'A','age':1}]
max(people,key=lambda dic:dic['age'])
ret=[]
for item in people:
    ret.append(item['age'])
print(ret)
max(ret)


ord:给acrii表中字符 打印对应数字
pow:两个参数 X的Y次方
三个参数X的Y次方对Z取余
repr:类似print代表的str????
reverse:颠倒顺序 反转
round:四舍五入
set:编程集合的形式
slice:切片 字符?
slice(1,4,2)#1-4步长2
sorted:排序 比较大小排序 不同类型会报错

people=[
    {'name':'alex','age':1000},
    {'name':'AAA','age':100}
    {'name':'AA','age':10}
    {'name':'A','age':1}]
print(sorted(people,key=lambda dic : dic['age']))



str:转换为字符串
type:判断类型返回布尔值
vars:def test():
msg="jkafhagakjd"
print(locals()) #打印出 成为字典形式
_import_():
import:引用模块 每个py文件都是模块 其中有函数? 拿来直接调用
_import_()导入字符串类型

文件处理流程
1 打开文件 得到文件句柄并赋予一个变量
2 通过句柄对文件进行操作
3 关闭文件


原文地址:https://www.cnblogs.com/louzhiyuan/p/10393031.html