python基础-函数,,函数介绍如果在开发程


函数介绍

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数

函数定义和调用

定义函数的格式如下:

def 函数名():        代码

demo:

  # 定义一个函数,能够完成打印信息的功能    def printInfo():        print ‘------------------------------------‘        print ‘         生命苦短,我用Python‘        print ‘-------------------

函数参数

<1> 定义带有参数的函数

示例如下:

   def add2num(a, b):        c = a+b        print c

<2> 调用带有参数的函数

以调用上面的add2num(a, b)函数为例:

 def add2num(a, b):        c = a+b        print c    add2num(11, 22) #调用带有参数的函数时,需要在小括号中,传递数据

调用带有参数函数的运行过程:

技术分享图片

<3>. 缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:

def printinfo( name, age = 35 ):

# 打印任何传入的字符串
print ("Name:", name)
print ("Age", age)

# 调用printinfo函数
printinfo(name="miki" )
printinfo( age=9,name="miki" )

以上实例输出结果:

Name:  mikiAge  35Name:  mikiAge  9

注意:带有默认值的参数一定要位于参数列表的最后面。

<4>.不定长参数

有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。

基本语法如下:

def functionname([formal_args,] *args, **kwargs):       "函数_文档字符串"       function_suite       return [expression]

加了星号(*)的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。

def fun(a, b, *args, **kwargs):    """可变参数演示示例"""    print ("a =", a)    print ("b =", b)    print ("args =", args)    print ("kwargs: ")    for key, value in kwargs.items():        print (key, "=", value)fun(1, 2, 3, 4, 5, m=6, n=7, p=8)  # 注意传递的参数对应

递归函数

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

举个例子,我们来计算阶乘n! = 1 * 2 * 3 * ... * n

解决办法1:

技术分享图片

看阶乘的规律

1! = 12! = 2 × 1 = 2 × 1!3! = 3 × 2 × 1 = 3 × 2!4! = 4 × 3 × 2 × 1 = 4 × 3!...n! = n × (n-1)!

解决办法2:

技术分享图片

原理:

技术分享图片

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

lambda函数的语法只包含一个语句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression

如下实例:

 sum = lambda arg1, arg2: arg1 + arg2    #调用sum函数  print "Value of total : ", sum( 10, 20 )  print "Value of total : ", sum( 20, 20 )

以上实例输出结果:

    Value of total :  30    Value of total :  40

Lambda函数能接收任何数量的参数但只能返回一个表达式的值

匿名函数不能直接调用print,因为lambda需要一个表达式

python基础-函数

评论关闭