昨天偷了一下懒,看了会剧,就没有更新Python的教程,今天我们继续更新,这一篇是关于Python中的函数。
其实写了这几天,我发现一个问题,就是这种教程只有第一天大家的热情最高,之后感觉看的人越来越少了。所以如果可以的话,大家可以在下面多多留言。
好了,下面进入正文。
函数
我们经常在同一个程序中多次复用相同的代码,函数可以很好的帮助我们完成这一点。
函数的定义
使用关键字def来定义一个函数
我们来看一个简单的函数的例子
#下面这个函数接受一个字符串和一个字母作为参数,返回这个字符串中有这个字母的个数
defchar_count(str,char):
return str.count(char)
#函数的调用
char_count('helloworld','o')
参数的传递
函数中参数顺序是定义时指定的,如果不按照顺序传入参数,必须使用参数名进行传参
defanimal_feature(animal,feature):
print(animal,'can',feature)
animal_feature('eagle','fly')#按顺序输入参数
>>eagle can fly
animal_feature(feature='fly',animal='eagle')#不按顺序输入参数
>>eagle can fly
默认参数值
函数的参数可以有默认的默认值,也就是说如果我们没有给指定参数变量任何值则会赋其默认值
defanimal_feature(animal,feature='fly'):
print(animal,'can',feature)
animal_feature('eagle')
>>eagle can fly
注意
·默认参数后面不能再有普通参数,比如f(a,b=10,c)就是错误的,应该写成f(a,c,b=90)
可变长的参数
可变参数的使用方法就是在参数列表前加*
比如我们要传入一些数字,返回这些数字的和
defnum_total(*list1):
num = 0
for i in list1:
num = num+i
return num
num_total(1,2,3,4,5)
num_total(1)#这里输入的参数个数是可变的
函数中修改参数值
首先我们说明一下函数传值和函数传引用
函数传值
函数参数传值的意思是函数调用过程中,在函数内部使用到的参数只是一个局部变量,在函数执行结束后就销毁了。不影响调用该函数的外部参数变量的值。
函数传引用
函数参数传引用的意思是传递给函数的参数就是外部使用的参数,函数执行过程中对该参数进行的任何修改都会保留,当函数调用结束后,这个参数被其他代码使用中都是函数修改过后的数据。
在python中,参数是没有类型的,可以传递任何类型的对象作为参数,但是不同类型的参数在函数中的修改,表现也是不一样的。
·不可变对象:数值、字符串、元组等
·可变对象:列表、字典等
num = 1
list1 =[1]
defchange_data(num,list1):
num*2
list1.extend([2,3])
num #num的值没有改变,因为num是不可变类型
list1#list1的值发生改变,因为list1是列表,是可变对象
变量的作用域
关于变量的作用域不准备讲了,与c语言里类似,差不多就是除非是全局变量(global),否则函数里变量改变不影响函数外面变量的值
可以看一下下面这个例子,与上面函数修改参数值进行类比
num = 1
list1 =[1]
defchange_data(num,list1):
num = 2 #这里num是函数内部的局部变量
list1 = [1,2,3]#这里list1是函数内部的局部变量,所以list1改变不改变外部变量的值
num
list1
领取专属 10元无门槛券
私享最新 技术干货