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是筛选条件