函数的参数、递归函数、切片、迭代、列表生成式
1.函数的参数分为五种:位置参数、默认参数、可变参数、关键字参数、命名关键字参数
1)传入到函数内部的比较普通的参数就是位置参数
2)默认参数的出现简化了函数的计算,默认参数必须指向不可变对象
3)可变参数传入的参数个可以改变,通过“*”符号来标识,可以传入list或tuple,也就是可以传入任意个参数,或者0个
如果已经定义了一个list或者tuple,name可以直接通过*加上元素来调用可变参数, 可变参数在函数自动调用时,自动组成一个tuple
4)关键字参数在函数调用是自动组成一个dict。关键字参数通过**kw来标识,它可以传入必选参数也可以传入任意个参数。
它的作用是扩展函数的功能
5)命名关键字参数可以限制传入的参数名字,通过*符号标识,如果定义了可变参数就不需要再定义*来标识命名关键字
命名关键字参数必须传入一个参数,不然会报错,可以有缺省值
6)参数组合可以将五种参数方式组合在一起,参数组合的顺序为:位置参数、默认参数、可变参数、命名关键字参数、关键字参数
2.递归函数
1)递归函数,就是通过调用自身本身,是通过栈来实现的,每进入一次函数调用,就会增加一层栈帧,每当函数调用返回,就会减少一层栈帧
但栈的大小是有限的,函数调用过多容易栈溢出
2)尾递归就是调用函数本身,不包含其他的表达式
3.切片
1)因为经常对列表或者元组里面的元素进行取出,通过循环过于麻烦,可以采用切片来实施
例如:L= [0,1,2,3,4,5,6,7]
L[:1]取出第一个元素,索引从1开始可以省略
2)元组和字符串都可已通过切片来查看他们中的元素,但是不会改变他们的元素
4.迭代:我们通过for循环来遍历list或者tuple这个过程就是迭代
1)只要是可迭代对象,无论有无下标,都可迭代,那怎么确定是否为可迭代对象呢?
第一步导入from collection.abc import Iterable 包
第二步通过instance(数据类型,Iterable)方法来判断。如果是Tyurea,那么就是可迭代对象,如果不是就不是可迭代对象,就无法迭代
2)当要遍历dict中的value值使时,可以通过key来遍历dict中的value,也可以通过value值来遍历value方法为d.values()方法
还可以同时遍历dict中的key和value,通过for k,v in d.items()方法遍历
3) 通过enumberate()内置函数来循环遍历得到索引-元素对,这样可以同时得到元素索引和元素本身
例如:for x,y in enumberate((1,1),(2,4),(3,9))
5.列表生成式:简单而又强大地实现遍历功能
1)可以将需要的结果放在for循环前面
[x*x for x in range(1,11) if x %2==0]
2)双层循环:
[m+n for m in 表达式('ABC') for n in 表达式('XYZ') ]
3)查看当前文件的所有文件和目录
第一步:导入import os包
第二步:列用listdir()方法来实现查看该功能
[d for d in d.listdir('.')]
4)两个变量来实现
[k+"="+v for k,v in d.items()]
5)将列表中的字符串中的大写字符变成小写字符通过lower()函数实现
[s.lower for s in L]
6.if-else表达式:
在for前面的if-else是表达式,在for后面的if 没有else是筛选条件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!