把具有独立功能的代码块组织为一个小模块,这就是函数
函数的文档说明用三引号括起来
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”
因为return除了能够将数据返回之外,还有一个隐藏的功能:结束函数
一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束了,因此后面的return没有什么用处
当函数返回值有多个时,默认为元祖格式
在形参中默认有值的参数,称之为缺省参数
注意:带有默认值的参数即缺省参数后面只能为空或者是缺省参数或者**kwargs
# 不定长参数之元组和缺省参数的位置可以调换
# 定义函数的时候 如果函数的参数为不定长参数之字典 必须放在函数的最末端
如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面,但如果有**kwargs的话,**kwargs必须是最后的
字典进行拆包,取出来的是key,而不是键值对
Python中函数参数是引用传递 注意不是值传递
python的内置高阶函数map()映射
map(func, iterable,...) 第一个参数为函数,后面参数为可迭代序列(一般为列表),函数的意义为将列表中的每个元素调用func函数,并返回一个新的列表(python2返回列表,python3返回迭代器,)对原有列表并不产生影响
abs取绝对值
# 注意:sort是list的方法,改变list对象的顺序,无返回值,修改列表本身;
# 而sorted是python的内置方法,使用于任何可迭代对象,返回一个新的列表,不影响原来的列表
对于不可变类型,因变量不能修改,所以运算不会影响到变量自身
而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量
可变类型有: 列表、字典、集合
不可变类型有: 数字、字符串、元组
关键字参数调用函数时,不需关注形参的顺序,
在调用函数时,使用关键字方式调用,我们只需要注意形参名字正确
========================================================================
注意:
在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收
参数列表中变量的个数根据实际传递的数据的多少来确定
有参数、有返回值
函数名不能重复
如果在同一个程序中出现了多个相同函数名的函数,那么在调用函数时就会出现问题,所以要避免名字相同
还有一点 不仅要避免函数名之间不能相同,还要避免 变量名和函数名相同的,否则都会出现问题
不定长参数之元祖*args本身为一个缺省参数(即默认为空的元祖),不定长参数之字典**kwargs必须放在最后
2. 调用函数
调用的方式为:
函数名([实参列表])
如果调用的函数 在定义时有形参,那么在调用的时候就应该传递参数
调用时,实参的个数和先后顺序应该和定义函数中要求的一致
如果调用的函数有返回值,那么就可以用一个变量来进行保存这个值
拆包时,变量元素要一一对应,(位置和数量)
要在函数内部修改全局变量时,需要使用global声明
3. 作用域
在一个函数中定义的变量,只能在本函数中用(局部变量)
在函数外定义的变量,可以在所有的函数中使用(全局变量)
使用递归函数时,必须有停止递归的条件(和循环中必须要有跳出循环的条件)
用lambda关键词能创建小型匿名函数。
lambda函数的语法只包含一个语句,如下:
lambda [arg1[,arg2,.....argn]]:expression
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
格式: 需要自定义排序的列表名.sort(key=lambda 元素临时变量名:变量名[key])
匿名函数不能直接调用print,因为lambda需要一个表达式
函数中return 和 pass 与循环中的break和continue一一对应
对于可变数据类型,b+=b ====等价于 b.extend.b
列表也是支持切片的