python基础-函数

Posted soaeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:  miki
Age  35
Name:  miki
Age  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! = 1
2! = 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基础-函数的主要内容,如果未能解决你的问题,请参考以下文章

201555332盛照宗—网络对抗实验1—逆向与bof基础

13 个非常有用的 Python 代码片段

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

逆向及Bof基础实践

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

在 Python 多处理进程中运行较慢的 OpenCV 代码片段