zoukankan      html  css  js  c++  java
  • Python全栈Day 16部分知识点

    函数

      匿名函数

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

      chr()  例如:chr(97)   即'a'  ord()是反过来

      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()

      

      

      

       

  • 相关阅读:
    利用Python爬取疫情数据并使用可视化工具展示
    接口与多态
    defer 延迟调用
    Spring缓存注解
    SpringAOP
    Mybatis动态SQL语句
    SpringMVC
    Spring Boot入门
    vue中使用JS实现倒计时功能
    springboot使用aop注解在controller层打印请求和响应报文
  • 原文地址:https://www.cnblogs.com/chenyuan-1995/p/9662136.html
Copyright © 2011-2022 走看看