Python中的函数


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)

关于函数我们就介绍这么多啦,后面我们看情况再学习吧。


评论
  目录