欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python全栈Day 16部分知识点

程序员文章站 2022-10-05 08:51:11
函数 匿名函数 lambda通常和其他函数联合使用,不该独立存在。 可以返回多个值: f=lambda x,y,z:(x+1,y+1,z+1) print(f(1,2,3)) 输出 (2,3,4) 编程的方法(不同流派): 面向过程:基本编程单位是函数(大过程拆分成小的部分) 函数式 :编程语言定义 ......

函数

  匿名函数

    lambda通常和其他函数联合使用,不该独立存在。

    可以返回多个值:

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

      print(f(1,2,3))

      输出

        (2,3,4)

 

  编程的方法(不同流派):  

    面向过程:基本编程单位是函数(大过程拆分成小的部分)

    函数式 :编程语言定义的函数+数学意义的函数(精简但不易读)

    面向对象

 

  函数式编程

    不可变(不用变量保存状态,不修改变量);函数即变量;尾调用(在函数的最后一步调用另外一个函数,最后一行不一定是函数的最后一步,'return 函数名(参数)+数字'不算尾调用,实际分为两步:res=函数名(参数)然后是res+数字)。函数式编程实现简单,但易读性差。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
def foo(n):
    print(n)
def bar(name):
    print('my name is %s'%name)
foo(bar('alex'))

输出

my name is alex
none

    函数的返回值可以是函数(本身或者任意函数) 

    return 函数名() 代表的是return这个函数的返回值

 

    高阶函数:满足函数接收的参数是一个函数名或者返回值中包含函数的函数。

    尾递归调用优化,省着保存之前的状态。

  map函数

   普通程序写法

1 # 终极版本
2 def map_test(func, array):
3     ret = []
4     for i in array:
5         res = func(i)
6         ret.append(res)
7     return ret
8 print(map_test(lambda x: x + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

输出

[2, 3, 4, 5, 6, 7, 8, 9, 10]

 

  使用map函数:(python2中生成的直接就是列表;map的处理方法不一定非是lambda函数,如果逻辑复杂,使用自定义函数;map的可迭代参数不一定是列表,可迭代的都可以)

    num_1=[1, 2, 3, 4, 5, 6, 7, 8, 9]

    res=map(lambda x:x+1,num_1)  #生成的是迭代器,只能迭代一次。处理方法+可迭代对象。

    print(list(res))

 

  filter函数

  filter留下满足函数的参数。

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 move_people=['x_sb','y','z_sb','w']
4 ret=filter(lambda n:not n.endswith('sb'),move_people)
5 print(list(ret))

输出

['y', 'w']

  reduce函数

from functools import reduce

reduce(lambda x,y:x*y,num_l,1)  #函数、对象、初始值

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 from functools import reduce
4 s='abcdefg'
5 print(reduce(lambda x,y:x+'_'+y,s))

输出

a_b_c_d_e_f_g

 

  map/filer/reduce总结

  map:处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样。

  filter:遍历序列中的每个元素,判断每个元素得到布尔值,如果是true则留下来。

  reduce

  

  内置函数

  abs()取绝对值

  all()判断括号内元素转化为布尔值之后是否都是真值或者可迭代对象为空都输出true

  any()只要有一个是真的就返回true

  bin()10->2进制

  hex()10->16进制

  oct()10->8进制

  bool()

  bytes()字符串转换为字节l,编码  #转化为二进制 bytes('你好',encoding='utf-8')  #字符串在内存上编码是unicode  #用什么编码就用什么解码bytes('你好',encoding='utf-8').decode('utf-8')  #如果不写,python3默认utf-8解码

  chr()  例如:chr(97)   即'a'

  dir()某个对象下有哪些方法(只有名字)  比如dict 

  divmod()分页功能  divmod(10,3)总共10条记录,一页显示3条

  enumerate()

  eval()把字符串中的数据结构提取出来 dic_str='{'name':'alex'}'  d=eval(dic_str)  print(d['name'])  输出'alex'  另外,可以把字符串中的表达式进行运算

   hash()进行哈希运算的,可哈希的数据类型即不可变数据类型,对应的哈希值固定且哈希值不可反推。不管传入参数长度多长,转化为哈希值长度都固定。用于查看看数据有没有被篡改。

  help()

  isinstance()  例如print(isinstance(1,int))  输出true

  globals()显示全局变量

  locals()显示局部变量

  max()  ;  min()