python之函数

什么是函数

函数是组织好的,可以重复使用的,用来实现单一或相关联功能的代码段,它能够提高应用的模块化和代码的重复利用率。

函数的定义

在Python中可以使用def关键字来定义函数,和变量一样每个函数也有一个响亮的名字,而且命名规则跟变量的命名规则是一致的。在函数名后面的圆括号中可以放置传递给函数的参数,这一点和数学上的函数非常相似,程序中函数的参数就相当于是数学上说的函数的自变量,而函数执行完成后我们可以通过return关键字来返回一个值,这相当于数学上说的函数的因变量。格式如下:

 def 函数名(参数类别):
    函数体
 return 表达式

举个简单的例子,定义个打印信息的函数。如下:

def print_info():
    print('--------------------------------------- ')
    print('          生命苦短,我用python          ')
    print('--------------------------------------- ')

函数的调用

定义了函数之后,就相当于有了一段具有特定功能的代码,要想让这些代码能够执行,需要调用函数。调用函数的方式很简单,通过“函数名()”来调用。

函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。以下举个简单的例子:

def power(x):
    return x*x

定义函数时,可以给函数的参数设置默认值,这个参数就被称为默认参数。如果默认参数没有传入值,则直接使用默认的值。例如:

def print_info(name,age=35):
    print("Name:",name)
    print("age",age)

print print_info("zhangsan")
print print_info("zhangsan",age=40)

不定长参数

通常在定义一个函数时,诺希望函数能够处理的参数个数比当初定义的参数个数多,此时可以在函数中使用不定长参数。

def 函数名 ([formal_args,] *args,**kwargs):
    函数体
    return 表达式

formal_args为形参,args和kwargs为不定长参数。当调用函数的时候,函数传入的参数个数优先匹配formal_args参数的个数。如果传入的参数个数和formal_args参数的个数相同,不定长参数会返回空的元组或字典;如果传入参数的个数比formal_args参数的个数多,可以分两种情况:
1、如果传入的参数没有指定名称,那么
args会以元组的形式存放这些多余的参数
2、如果传入的参数指定了名称,如m=1,那么**kwargs会以字典的形式存放这些被命名的参数。
例如:

def test(a,b,*args):
    print(a)
    print(b)
    print(args)

test(11,22)

递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n

def fact(n):
    if n==1:
       return 1
    return n*fact(n-1)

你可能感兴趣的:(python之函数)