Python中的函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
Python提供了许多内建函数,比如print()。我们可以自己创建函数,这就是自定义函数。学习自定义函数可以帮助我们更好地理解Python中的函数。
自定义函数
我们可以这样定义一个函数:
- 以 def 关键词开头,后接函数标识符名称和圆括号**()**;
- 圆括号里面写上此自定义参数执行所需要的参数,圆括号结束后要跟冒号“**:**”;
- return [表达式] 结束函数,可以选择性地返回一个值给函数调用方,不带表达式的 return 相当于返回 None。
举一个栗子
我们来建立一个自定义函数输出”Beautiful fairy, happy fairy!”
def fairy() :
print("Beautiful fairy, happy fairy!")
fairy()
怎么样,是不是很简单呀,小仙女😆😆
再举一个栗子
我们来自定义一个具有参数的函数
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
相当于我们自定义的一个比较大小的函数啦。
可变对象与不可变对象
在Python中,字符串,数字,元组等是不可变对象,而列表,字典等是可变对象:
- 不可变对象在重新赋值时,如变量赋值 a=5 后再赋值 a=10,实际是新生成一个 int 类型的对象 10,再让 a 指向它,而 5 被丢弃,而非改变 a 的值;
- 可变对象在重新赋值时,如变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将la的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
因此在函数调用中传递参数时:
- 如果传递了不可变对象,则函数中对该对象做的修改,不会影响原对象;
- 如果传递了可变对象,则函数中对该对象的修改,会影响原对象。
看下面这个例子就明白啦:
def changenum(a):
a = 10
return
def changelist(x):
x.append([1,2,3,4])
return
a = 1
changenum(a)
print(a)
x = [1, 2, 2]
changelist(x)
print(x)
指定关键字的函数调用
上文中我们写的函数都没有指定关键字,对参数的调用也是按顺序输入并调用的。现在我们来看这样的一个例子:
def printinfo(name, age):
print ("姓名: ", name)
print ("年龄: ", age)
return
printinfo(age=18, name="little fairy")
以上代码的输出结果应该为:
姓名: little fairy
年龄: 18
这个例子告诉我们,可以借用函数中的关键字,确定把调用时的参数传递给函数里的哪个变量,制定了关键字就不用严格按照调用顺序。
缺省参数
缺省参数指的是函数定义时所设置的默认参数值,如果调用时不传入对应值,就会使用默认参数。来看例子:
def printinfo(name, age=18):
print ("姓名: ", name)
print ("年龄: ", age)
return
printinfo(name="little fairy")
这里我们定义的printinfo()函数中的age参数就设置了缺省值18,即使调用时不输入age参数,也可以使用缺省值。
匿名函数
Python中有一种特殊的函数即匿名函数,它的定义形式非常简单:
lambda [arg1 [,arg2,.....argn]]:expression
冒号前面是函数参数,后面是函数返回值。我们来看一个例子:
mysum = lambda arg1, arg2: arg1 + arg2
print ("相加后的值为: ", mysum(10, 20))
print ("相加后的值为: ", mysum(20, 20))
这是一种匿名函数使用方式,还有另一种更常见的使用方式:
a = list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
print(a)
关于函数我们就介绍这么多啦,后面我们看情况再学习吧。