Python学习笔记(4)——函数
函数
一、函数的定义和调用
函数是一个能完成特定功能的代码块,可在程序中重复使用,减少程序的代码量和提高程序的执行效率。
函数的定义:
---返回值不是必须的,如果没有return语句,则Python默认返回值None
--参数列表可以由多个、一个或零个参数组成。
--圆括号是必不可少的,即使没有参数也不能没有它;不要忘记圆括号后面的冒号。
--函数体一定要注意缩进。
--“形参”和“实参”。
--return语句的作用是结束函数调用,可以出现在函数体的任意位置。
--圆括号是必不可少的,即使没有参数也不能没有它;不要忘记圆括号后面的冒号。
--函数体一定要注意缩进。
--“形参”和“实参”。
--return语句的作用是结束函数调用,可以出现在函数体的任意位置。
三、函数的参数
--在定义函数时,我们可以用赋值符号给某些形参指定默认值,这样当调用该函数的时候,如果调用方没有为该参数提供值的话,则使用默认值。
--如果调用该函数的时候为该参数提供了值的话,则使用调用方提供的值——像这样的参数我们称之为缺省参数。
--默认参数必须在所有标准参数之后定义。
--如果调用该函数的时候为该参数提供了值的话,则使用调用方提供的值——像这样的参数我们称之为缺省参数。
--默认参数必须在所有标准参数之后定义。
--需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。加了星号(*)的变量名会存放所有未命名的变量参数。
attention:
1、在一个函数中对参数名赋值不影响调用者。
2、在一个函数中改变一个可变的对象参数会影响调用者,如列表,字典,数组等。
2、在一个函数中改变一个可变的对象参数会影响调用者,如列表,字典,数组等。
3、参数是对象指针,无需定义传递的对象类型。
四、匿名函数
1、用lambda关键词能创建小型匿名函数。
2、Lambda函数能接收任何数量的参数但只能返回一个表达式的值。
3、匿名函数不能直接调用print,因为lambda需要一个表达式。
2、Lambda函数能接收任何数量的参数但只能返回一个表达式的值。
3、匿名函数不能直接调用print,因为lambda需要一个表达式。
4、lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。
example
五、局部变量和全局变量
1、在一个函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量;
2、在一个文件顶部定义的变量可以供该文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。
3、如想在局部作用域中改变全局作用域的对象,必须使用global关键字。
2、在一个文件顶部定义的变量可以供该文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。
3、如想在局部作用域中改变全局作用域的对象,必须使用global关键字。
六、函数的注释说明—文档字符串
在函数定义后紧跟的字符串会被认为是函数的说明,使用help(函数名)可显示出来。
七、常用函数
--abs(x):abs()返回一个数字的绝对值。如果给出复数,返回值就是该复数的模。
--callable(object):callable()函数用于测试对象是否可调用,如果可以则返回1(真);否则返回0(假)。可调用对象包括函数、方法、代码对象、类和已经定义了“调用”方法的类实例。
--cmp(x,y) :cmp()函数比较x和y两个对象,并根据比较结果返回一个整数,如果x<y,则返回-1;如果x>y,则返回1,如果x==y则返回0。
--isinstance(object,class-or-type-or-tuple) -> bool测试对象类型 isinstance(a,str)
--divmod(x,y): divmod(x,y)函数完成除法运算,返回商和余数。
--pow(x,y[,z]) :pow()函数返回以x为底,y为指数的幂。如果给出z值,该函数就计算x的y次幂值被z取模的值。
--len(object) -> integer :len()函数返回字符串和序列的长度。
--min(x[,y,z...]) :返回序列或参数的最小值
--max(x[,y,z...]) :返回序列或参数的最大值
--range([lower,]stop[,step]) :range()函数可按参数生成连续的有序整数列表。
--round(x[,n]) :round()函数返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
--type(obj):type()函数可返回对象的数据类型。
--xrange([lower,]stop[,step]):xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能节省内存。
八、类型转换函数
数值型
float(x) :把一个数字或字符串转换成浮点数。
hex(x) :把整数转换成十六进制数。
oct(x) :把整数转换成八进制数。
int(x[,base]) :把数字和字符串转换成一个整数,base为可选的基数。
complex(real[,imaginary]) :complex()函数可把字符串或数字转换为复数。
eg:complex(“2+1j”) 、 complex(2,1)
long(x[,base]) :long()函数把数字和字符串转换成长整数,base为可选的基数。
字符串
chr(i):chr()函数返回ASCII码对应的字符串
ord(x):ord()函数返回一个字符串参数的ASCII码或Unicode值 。
str(obj):str()函数把对象转换成可打印字符串。
序列对象
list(x) :list()函数可将序列对象转换成列表
tuple(x): tuple()函数把序列对象转换成tuple
九、序列操作函数
常用函数中的len()、max()和min()同样可用于序列.
filter(function,list):调用filter()时,它会把一个函数应用于序列中的每个项,并返回该函数返回真值时的所有项,从而过滤掉返回假值的所有项。
map(function,list[,list]):map()函数把一个函数应用于序列中所有项,并返回一个列表。
reduce(function,seq[,init]) :reduce()函数获得序列中前两个项,并把它传递给提供的函数,获得结果后再取序列中的下一项,连同结果再传递给函数,以此类推,直到处理完所有项为止。
zip(seq[,seq,...]) :zip()函数可把两个或多个序列中的相应项合并在一起,并以元组的格式返回它们,在处理完最短序列中的所有项后就停止。
举例参考:https://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html
参考资料
中国科学院大学张老师讲授的《Python科学计算与数据处理》ppt
中国科学院大学张老师讲授的《Python科学计算与数据处理》ppt