python 中关于定义函数的讲解以及案例分析(全文中的案例,我都是以图片的形式展现的,主要是让学员自己敲打代码,加深印象,省的直接复制粘贴,那样子很无用!)
定义一个函数,再调用这个函数:
def 开头,后接函数名称和圆括号()。
参数,自变量房子啊圆括号内,圆括号之间可定义参数。
函数第一行可用字符串解释说明定义。
内容以冒号:开始,并且要缩进。
return【表达式】结束函数,选择性的返回一个值给调用方,不带表达式的return相当于返回None.
案例分析:
关于参数的传递
字符串,元组,数字是不可更改对象,而列表,字典是可以修改对象。
不可变类型:变量赋值 a=5,再赋值a=10,实际上是新生成了一个int值的对象10,再让a指向它。 而5被丢弃,不是改变a的值。相当于新生成了a.
在定义调用函数时也同理,fun(a)传递的只是a的值,没有影响a对象本身,比如在fun(a)内部修改a的值,只是修改另一个复制对象,不会影响a本身。
不可变类型:变量赋值a=[1,2,3,4]后再赋值a[2]=5,则是将list a的第三个元素值更改,本身a没动,只是内部一部分值被修改了。
可变类型:fun(a)将a真正传递过去,修改后fun外部的a也会受影响。
案例分析:
不可变类型:案例一;可变类型:案例二。
函数补充:
不定长参数:加了*号的变量名会存放所有未命名的变量参数。
匿名参数:用lambda 创建匿名参数。用法:lambda[arg1[,arg2……argn]]:experession
局部和全局变量:(作用域)
global:可将变量定义为全局变量(全局变量想作用与局部时)。
案例分析:通过下图案例可以知道,*为元组,**为字典。
递归函数:
定义:函数调取自身。 一切递归实现的功能都可以用循环实现,但是由的时候递归函数更易读。
下面案例分析的就是递归函数与普通函数的区别:
案例算法的介绍,就是在算数学题中的阶乘。 n(n-1)(n-2)(n-3)(n-4)......