一、函数
1、创建函数def:创建一个计算裴波那契数列(任一个数都是前两个数之和的数字序列)的函数。
2、判断函数是否可调用:callable函数
3、return 语句:用来从函数中返回值。
4、文档化函数:在函数的开头写下字符串,它就会作为函数的一部分进行存储。
5、改变参数:
形参:函数名后面的变量通常称为形参。
实参:调用函数时提供的值时实参,或者称为参数。
如下代码:try_to_change函数内参数n获得了新值(字符串,不可变),不会影响name变量。
如下代码:change函数内参数n获得了新增(列表,可变),这里n与names引用了同一个列表,因此改变n的值会影响到names变量。
2、代码分析:编写一个存储名字,并且能用名字,中间名,或者姓查找联系的人的程序:
代码运行结果:
3、参数不可改变:在python中函数只能修改参数本身,如果参数不可变(是数字),只能从函数中返回所有需要的值。
4、关键字参数和默认参数:
关键字参数:使用参数名提供的参数。明确每个参数的作用。
关键字参数作用一:明确每个参数的作用。
关键字参数作用二:在函数中给参数提供默认值:
位置参数与关键字参数混合使用需要将位置参数放在前面。
5、收集参数:使用*收集其余位置的参数。
使用*收集参数,通过元组打印
使用*收集关键字参数报错:
使用**收集关键字参数至字典:
*pospar收集其余位置的参数,**keypar收集关键字参数:
如何实现多个名字同时存储?:
程序运行结果:
6、参数收集逆过程:
同时传入多个实参或者列表。
7、练习使用参数:
程序运行结果:
8、作用域:除了全局作用域外,每个函数都会创建一个新的作用域。
如下代码:x=42称为局部变量,x=1称为全局变量。当调用foo函数时新的命名空间被创建,作用于foo内的代码。因此不会影响全局变量的值。
如下代码:实现了在函数内部访问全局变量:globls()函数获取全局变量值。
如下代码:实现了重绑全局变量:
嵌套作用域:作用,使用一个函数创建另一个。
一个函数位于另外一个里面,外层函数返回里层函数。返回的函数还可以访问它的定义所在的作用域。每次调用外层函数,内层函数都被重新绑定。
9、递归:引用(调用自身)
1、 实现阶乘:n*(n-1)*(n-2)...........*1
如何使用递归?(1的阶乘等于1,大于1的数n的阶乘是n乘n-1的阶乘):
2、实现幂:
如何使用递归?(对于任意数字x来说,power(x,0)是1,对于任意大于0的数来说,power(x,n)是x乘以(x,n-1)的结果)
3、实现二分法查找(如果上下限相同,那么就是数字所在的位置,返回。否则找到两者的重点,查找数字是在左侧还是右侧,继续查找数字所在的那半部分)
10、函数式编程:
1、map函数:将序列里的元素全部传递给一个函数。
2、filter函数:对元素进行过滤,返回其函数为真的函数列表。
isalnum():检查字符串是否有数字和字母组成。