内置函数和模块

1、三元表达式

代码如下:
    x = 1
    y = 2
    res = 'ok' if x > y else 'no'
    print(res)
    输出结果:no	

2、内置函数:重点

需要掌握的:	
    int
    float
    str
    list
    tuple
    dict
    set
    bool
    bytes
    s = frozenset({1,2,3})  # 不可变集合
    print(type(s))

3、面向对象

需要掌握的:	
    object
    classmethod
    staticmethod
    property
    hasattr
    getattr
    setattr
    delattr
    isinstance
    issubclass
面向对象编程:
    核心是过程二字,过程指的是做事的步骤,即先干啥、再干啥、后干啥

    所以说,基于该思想编写程序就好比设计一条流水线
优点:
    复杂的问题流程化、进而简单化
缺点:
    扩展性差

4、模块

1 什么是模块
    模块就是一系列功能的集合体,可以理解为"工具包"
    模块的四种类别:
        1、一个py文件就可以是一个模块,文件名m1.py,模块名为m1
        2、一个包含有__init__.py文件的文件夹称之为包,也是一种模块
        3、
        4、
    模块有三种来源:
        1、自带的
            内置
            标准库
        2、第三方模块:pip3 install requests
        3、自定义模块
2 为何要用模块
    拿来主义,提升开发效率
    解决冗余问题,让程序变得更加清晰
3 如何用模块
import time
print(time)
如何用模块:import导入===》1.基本语法:import+模块名(不含py)
2.导入规范:先写内置,在写第三方,最后在写自定义
3.优点:不会产生冲突,缺点:每次调用都输入一次模块名

匿名函数

3.1 匿名函数与lambda
    对比使用def关键字创建的是有名字的函数,使用lambda关键字创建则是没有名字的函数,即匿名函数,语法如下

    lambda 参数1,参数2,...: expression
    举例

# 1、定义
    lambda x,y,z:x+y+z

    #等同于
    def func(x,y,z):
        return x+y+z

# 2、调用
# 方式一:
    res=(lambda x,y,z:x+y+z)(1,2,3)

# 方式二:
        func=lambda x,y,z:x+y+z # “匿名”的本质就是要没有名字,所以此处为匿名函数指定名字是没有意义的
        res=func(1,2,3)
2.max,min
    匿名函数与有名函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,所以匿名函数用于临时使用一次的场景,匿名函数通常与其他函数配合使用,我们以下述字典为例来介绍它

    salaries={
        'siry':3000,
        'tom':7000,
        'lili':10000,
        'jack':2000
    }
    要想取得薪水的最大值和最小值,我们可以使用内置函数max和min(为了方便开发,python解释器已经为我们定义好了一系列常用的功能,称之为内置的函数,我们只需要拿来使用即可)

    >>> max(salaries)
    'tom'
    >>> min(salaries)
    'jack'
    内置max和min都支持迭代器协议,工作原理都是迭代字典,取得是字典的键,因而比较的是键的最大和最小值,而我们想要的是比较值的最大值与最小值,于是做出如下改动

    # 函数max会迭代字典salaries,每取出一个“人名”就会当做参数传给指定的匿名函数,然后将匿名函数的返回值当做比较依据,最终返回薪资最高的那个人的名字
    >>> max(salaries,key=lambda k:salaries[k]) 
    'lili'
    # 原理同上
    >>> min(salaries,key=lambda k:salaries[k])
    'jack'
    同理,我们直接对字典进行排序,默认也是按照字典的键去排序的

    >>> sorted(salaries)
    ['jack', 'lili', 'siry', 'tom']
3.2 map、reduce、filter
函数map、reduce、filter都支持迭代器协议,用来处理可迭代对象,我们以一个可迭代对象array为例来介绍它们三个的用法

array=[1,2,3,4,5]
要求一:对array的每个元素做平方处理,可以使用map函数

map函数可以接收两个参数,一个是函数,另外一个是可迭代对象,具体用法如下

>>> res=map(lambda x:x**2,array)
>>> res
<map object at 0x1033f45f8>
>>>
解析:map会依次迭代array,得到的值依次传给匿名函数(也可以是有名函数),而map函数得到的结果仍然是迭代器。

>>> list(res) #使用list可以依次迭代res,取得的值作为列表元素
[1, 4, 9, 16, 25]
posted @ 2021-08-16 16:10  迷恋~以成伤  阅读(63)  评论(0)    收藏  举报