昨日内容

迭代器

迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象

可迭代对象

含有__iter__的方法的数据类型

除了数字类型都是可迭代对象

迭代器对象

含有__iter____next__方法的数据类型

只有文件是迭代器对象

可迭代对象加上__iter__就是迭代器对象

for循环原理

lt = [1,2]
lt_iter = lt.__iter__()

while True:
    try:
        print(lt_iter.__next__())
    except StopIteration as e:
        break

三元表达式

条件成立 if条件 else 条件不成立

列表推导式

[i for i in range(10)]

字典生成式

{i:i for i in range(10)}

zip

把多个可迭代对象一次性读取每一个可迭代对象种的元素,拼成元素

生成器表达式

(i for i in range(10))节省空间

生成器

本质是迭代器,自定义迭代器,含有yield关键字的函数

def ge():
    yield

yield

  1. 暂停函数
  2. 通过next取出一个yield的值

递归

函数调用函数本身,有退出条件

count = 0
def a():
    global count
    print(count)
    if count = 100:
        return
    count += 1
    a()

今日内容

匿名函数

lambda 参数:<代码块>

匿名函数一般不单独使用,和filter()/map()/sorted()/列表的sort()内置方法连用

  1. sort/max /min

    内置方法是原值排序

    salary_dict = {
        'nick':2000,
        'wick':3000,
        'jason':5000,
        'egom':10000
    }
    # 按照薪资排序
    salary_list = list(salary_dict.items())
    # 方法1
    def func(i):
        return i[1]
    
    salary_list.sort(key=func)
    print(salary_list)
    # 方法2
    salary_list.sort(key=lambda i:i[1])
    print(salary_list)
    
  2. sorted

    重新创建一个新的列表排序

    salary_list = sorted(salary_list,key=lambda i:i[1],reverse = True)
  3. filter过滤筛选(迭代器)

    判断匿名函数的返回值的真假,真则留下

    print(list(filter(lambda i:i[1] > 5000,salary_list)))  # [('egom':10000)]
  4. map绘制/映射

    匿名函数的返回值是map()的结果之一

    print(list(map(lambda i:i[1]+2000,salary_list)))  # [4000,5000,7000,12000]

内置方法

掌握

  1. bytes 转换二进制串

    bytes('中国',encoding = 'utf8')
  2. chr/ord

    print(chr(97))  # a
    print(ord('a'))  # 97
  3. divmod

    print(divmod(10,4))  # 取整/取余
  4. enumerate

    lt = [1,2,3]
    for i,j in enumerate(lt):
        print(i,j)  # 索引/值
  5. eval 把字符串的引号去掉,留下的是什么就是什么

    s = '[1,2,3]'
    print(eval(s))  # [1,2,3] type:str
  6. hash 可变不可哈希

    print(hash(1))  # 判断是否可哈希,可哈希返回原值,否则报错

了解

方法 作用
abs 绝对值
all 如果全为真则为True,否则为False
any 只有有一个为真,则为真,否则为假
bin 转换为二进制
oct 八进制
hex 十六进制
dir 列出模块所有方法
frozenset 不可变集合
globals/loals 列出所有全局变量/当前位置所有变量
pow
round 四舍五入
slice 切片
sum 求和
__import__ 通过字符串导入模块

异常处理

只能捕捉逻辑错误

try:
    代码
except Exception as e:  # 万能异常
    print(e)  # 错误描述
    代码

finally:
    代码  # 无论报错与否,最终都会执行

assert 断言

assert 条件

assert 1 == 1  # 不做处理
assert 1 == 2  # 报错 

raise 主动抛出错误

内置方法使用

面向过程编程(思想)

IPO编程 == 面向过程编程

面向过程编程:类似于流水线,一一步一步的往下走

优点:逻辑非常清晰

缺点:上一步错了,下一步跟着错

函数进阶(三) day14的更多相关文章

  1. Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器

    Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: ​ 1. 可以在局部作用域声明一 ...

  2. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  3. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

  4. 【python 3】 函数 进阶

    函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...

  5. day11.1函数进阶 列表集合 字典中的函数变量,函数作为形参

    函数进阶 1.函数作为变量 a=123 name="gao" nums=[1,2,3] data=nums#指向同一个内存地址 #查看内存地址篇章 def func(): prin ...

  6. python基础 (初识函数&函数进阶)

    函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  7. day 10 - 1 函数进阶

    函数进阶 命名空间和作用域 命名空间 命名空间 有三种内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被加载进内存 ...

  8. python基础之 初识函数&函数进阶

    函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  9. python大法好——递归、内置函数、函数进阶

    1.递归(自己干自己) def fun(n): n=n/2 print(n) if(n>2) fun(n) #函数调用 fun(10) 结果是5 2 1 0 递归的执行过程:递归执行到最里面一层 ...

随机推荐

  1. 性能测试瓶颈判断(LR&Windowns)

    性能测试瓶颈判断(LR&Windowns) 一.判断CPU瓶颈(Processor) 1, %processor time 如果该值持续超过95%,表明瓶颈是CPU.可以考虑增加一个处理器或换 ...

  2. 怎样用手机把视频变成GIF表情包?原来那么简单,网友:看完涨知识了

    现如今表情包几乎成了,我们手机聊天的必需品了.不过相比于普通表情包,大家更喜欢用GIF表情包,因为动图表情包不仅更加搞笑,而且能更形象的表达我们的情绪.比较有想法的朋友甚至想自己制作GIF表情包,但是 ...

  3. MySQL 相关规约(v1.0)

    0)前言 a. 基本规约 [强制]表存储引擎必须使用InnoDB(针对主库一般是强制要求的) [强制]表字符集默认使用utf8,必要时候使用utf8mb4(个人踩坑:emoji表情存储问题) 说明: ...

  4. 小鸟初学Shell编程(七)变量引用及作用范围

    变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...

  5. 12.Django基础十之Form和ModelForm组件

    一 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户 ...

  6. 阿里云ecs安全组端口开放设置

    新买的一些云服务,上面操作都没问题还是无法访问,需要在购买的服务里加上安全规则,如图: 点击配置规则进行操作

  7. 说说 Java 线程间通信

    序言 正文 一.Java线程间如何通信? 线程间通信的目标是使线程间能够互相发送信号,包括如下几种方式: 1.通过共享对象通信 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值:线程A在一个 ...

  8. java程序猿如何练习java版的易筋经?

    故事背景 电视剧<天龙八部>中,阿朱易容后进入少林寺偷走了<易筋经>,她一直想把这本书送给乔峰.耿直的乔峰觉得此书来历不正,不肯接受.几番波折,这本书最后落到聚贤庄庄主游坦之手 ...

  9. 五 mysql之多表查询

    目录 一 介绍 二 多表连接查询 1.交叉连接:不适用任何匹配条件.生成笛卡尔积 2.内连接:只连接匹配的行 3 .外链接之左连接:优先显示左表全部记录 4 .外链接之右连接:优先显示右表全部记录 5 ...

  10. inkscape 无法打开文档属性

    从文件->文档属性 点击了无反应 参考https://bugs.launchpad.net/inkscape/+bug/1664031 其实不是无反应,只是因为我们自己的某些操作,让文档属性这个 ...