python_8 拆包、内置函数和高阶函数
一、查缺补漏
1. \t 子表符,用于对其
二、拆包
1. 拆包:顾名思义就是将可迭代的对象如元组,列表,字符串,集合,字典,拆分出相对应的元素
2. 形式:拆包一般分两种方式,一种是以变量的方式来接收,另一种是用"*/**"号多用于函数拆包,单星号字典拆分只能得到字典的键(key),不能得到字典的值(value)
a. 当以变量的方式拆包时需要左右两边的元素的个数和变量的个数一致,否则报错,不同类型都可通过这个拆包
如:list1=[1,2,5] a,b,c=list1 print(a,b,c) 结果为:1 2 5
b. 当以*和**对函数拆包时,*支持列表、元组、集合等类型的拆包,**支持字典类型的拆包
i. *:当需要传不定长参数、多个参数时把需要的参数放在一个list或任意的可迭代对象中,在通过拆包的方式传递,拆包的过程中可以将list类型转化为tuple类型
其中test02(*test_list)等同于test02(1,2,3,4,5,6)
当只取list中的第一个元素也可以使用不定长参数*args来进行拆包
如:list1=[1,2,3,5] a,*args,c=list1 print(a) 结果为:1
ii. **:当函数需要传递多个关键字参数时可以把需要的参数放到dict类型中,再通过**拆包进行传递,拆包前后统一都是dict类型
其中test02(**test_dict) 等同于 test02(key1="key1",key2="key2")
三、内置函数
1. 如何查看python的内置函数 import builtins print(dir(builtins))
2. 常用的内置函数
a. print()
b. input()
c. type()
d. len()
e. list()、tuple()、dict()、str()、set()、bool()、int()、float()
f. sum()
g. id() 取内存地址
h. range() 生成列表
3. ()是对函数的调用,没有()的函数是没有去调用
四、高阶函数
1. zip():压缩和解压,也可以用于list拆包,将对应位置的数据逐一拆分配对,以最短的list为准
a. 压缩:list(zip(要压缩的表1,表2))
当用于压缩时需要强制list类型转换才能显示出来,因为zip展示的是对象,也可以转换成字典类型
b. 解压:list(zip(*压缩之后的结果))
当用于解压时会恢复未压缩之前的的内容,超过长度的list元素会被丢弃
c. 拆包:[*zip(*拆包)] 用于拆分重新配对多层list,zip前加[*]可以直接显示出结果(tuple类型)
2. enumerate():获取可迭代对象的索引位置,不指定索引起始值,默认为0,指定以指定的值开始显示
3. Lambda 匿名函数 接收值=lambda 形参 :返回值 可以不为函数起名,直接定义函数
五、open函数
1. 读文件语法:
a. 需要执行代码关闭文件
i. file = open(file='打开的文件位置',mode='读文件一般写r,表示模式为read')
ii. test=file.read() ---- 读取所有的数据
iii. print(test文件名) -----打印出test.txt的内容
iv. file.close() -----关掉文件,一定要关掉,不关掉文件光标有问题
b. 自动关闭文件:with语句,管理上下文
i. with open(file='test.txt',mode='r') as file: ----with语句
ii. test = res.read() ---- 读取所有的数据
iii. print(test) -----打印出test.txt的内容
iv. 当执行with的时候会调用一个_ _close()的魔术方法,所以不用代码执行close
标注:如果打开的文件和py文件在同一个文件目录下那么在file中可以直接写文件名如test.txt
file表示任意的接收名
2. 使用:更改位置在1>a>ii
a. file.read() 读取整个文件内容(全部读取出来)
b. file.readline() 读取文件的第一行数据,遇到\n换行符结束
c. file.readlines() 读取文件逐行读取,会读取换行符,返回所有行组成的list,对比a更省内存
3. 写文件
a. with open(file='文件地址',mode='写文件用w-表示write') as 接收名:
接收名.write("想写的内容")
b. 覆盖写入,每次写入会覆盖之前的内容,全部覆盖
追加写入,只需将mode='a'即可
不会自动换行,需要换行必须加\n
列:with open(file='test.txt',mode='w') as res: res.write("z") 结果:在test.txt文档中写入了z
c. 文件保存:
自动保存:先写进缓存区等程序运行结束之后,再一次性写进文件,当异常结束,不能成功保存
手动保存:文件名file.flush()
列:手动保存可以更好的保存成功
标注:只有导入time库,才可以使用休息等待
4. 操作模式(写在open函数的mode中)
a. r :读
b. w:覆盖写入
c. a :追加写入
d. +(表示同时可读写)
i. r+:可读可写,覆盖写入
ii. w+:可读可写,覆盖写入
iii. a+:可读可写,追加写入
e. 二进制(打开图片、上传图片)
i. rb:二进制的方式读
ii. wb:二进制的方式写
iii. ab:二进制的方式追加写
5. 光标操作 文件接收名.seek(offset,whence)
a. offset:开始的偏移量,表示从哪里开始读取,如果写0就表示不偏移
b. whence:
0:从文件开头开始读
1:表示从当前光标位置开始读
2:表示从文件末尾开始
python_8 拆包、内置函数和高阶函数的更多相关文章
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- python学习8—函数之高阶函数与内置函数
python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数
一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...
- 初识python:高阶函数(附-高阶函数)
定义: 变量可以指向函数,函数的参数能接收变量,那么,一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数. 简单说就是:把函数当作参数传递的函数就是高阶函数 特性 1.把一个函数名当作实参传 ...
- Python 函数进阶-高阶函数
高阶函数 什么是高阶函数 高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数. 高阶函数可以是你使用def关键字自定义的函数,也有Py ...
- Python技法3:匿名函数、回调函数和高阶函数
1.定义匿名或内联函数 如果我们想提供一个短小的回调函数供sort()这样的函数用,但不想用def这样的语句编写一个单行的函数,我们可以借助lambda表达式来编写"内联"式的函数 ...
- 12、python中的函数(高阶函数)
一.高阶函数 函数实际上也是一个对象,所以也能由变量指向一个函数对象,实际上函数名就是一个变量名.那么函数是传入变量作为参数的,如果传入的变量指向的是函数对象,这种函数就叫高阶函数. 高阶函数就是传入 ...
- Python小世界:匿名函数、高阶函数、推导式
前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...
- Python day5 --------递归、匿名函数、高阶函数、内置函数
一.递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归要求: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减 ...
随机推荐
- SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心
服务的提供者和消费者 服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用. 当一个服务通过远程调用去调用另一个 ...
- Flink Forward #Asia2020 流批一体及数仓资料整理
阿里云实时计算负责人 - 王峰(莫问)/ FFA_2020-Flink as a Unified Engine - Now and Next-V4 2020年Flink 基于Flink 的流批一体数仓 ...
- kali linux 渗透测试 01 kali介绍
安全问题的根源 分层思想------盲人摸象 只追求功能实现----比较片面 最大的安全威胁是人---- 安全目标 先于攻击者发现和防止漏洞出现 攻击型安全 防护性安全 渗透测试 尝试击破安全防御机制 ...
- elasticsearch 6.2.4和elasticsearch-head环境搭建 使用docker-compose方式
elasticsearch 6.2.4和elasticsearch-head测试环境搭建 使用docker-compose方式 一 背景说明 对于新手来说搭建一个elasticsearch的测试环境稍 ...
- 数据库—ER模型概念设计
文章目录 ER模型的概念 如何画ER图 ER图转换为关系数据库 ER模型的概念 实体 画图时用方形表示 属性 用椭圆形表示 关系 用菱形表示 主键(主码) 在主属性下面画划线 外键(外码) 这里一般是 ...
- Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?
Spring是一个基于Java的企业级应用程序开发框架,它使用了多种设计模式来实现其各种特性和功能.本文将介绍一些在Spring中使用的常见设计模式以及相应的代码示例和说明. 单例模式 单例模式是Sp ...
- ASP.NET Core如何禁用模型验证(或者从模型状态中移除某些属性)?
这是一篇4年前的文章:[经验分享]在ASP.NET Core中,如果禁用某个请求的模型验证? 事隔多年,又有网友问到这个问题.我就来重新整理一下,顺便扩展一下之前的解决办法. ===== 这是一个来自 ...
- Flask学习记录:在w3cschool资料的基础上的个人摘录、实践与总结
学习与转载自w3cschool,在w3cschool资料的基础上的个人摘录.实践与总结,如有错误望留言. 一.Flask 概述 2021-08-25 14:01 更新 1.1 什么是Web Frame ...
- FlexBox 行间距
问题背景 在Flex布局方式下, 父容器约定是换行的方式, 不足以容纳一行子元素的时候, 会单独进行折行, 那么折行的行间距如何处理呢? 解决办法 通过在子Item上面设置margin-top可以模拟 ...
- 在mobaxten上使用scala报错
查看报错信息 [ERROR] Failed to construct terminal; falling back to unsupported java.io.IOException: Cannot ...