python函数的使用

一、函数的定义

Python使用保留字def定义一个函数,形式如下:

def   <函数名>(<参数列表>):

      <函数体>

      return <返回值>

函数的调用过程与C语言类似。

关于一中特殊的函数——匿名函数:使用lambda,

匿名函数是将函数名作为函数结果返回,语法格式如下:

<函数名>=lambda(<参数列表>)

等价于下面的形式:

def    <函数名>(<参数列表>):

      return    <表达式>

通俗来讲,lambda适用于简单、能够用一行表示完的函数,具体实例如下:

>>>f=lambda    x,y : x*y

>>>type(f)

>>>f(3,5)

22

二、函数的参数传递

一、可选参数和可变数量参数

1.可选参数:

有些函数在定义时,它的参数存在一个默认值,因此在调用时可以传入参数,也可以不传入参数,不传入参数时,使用它的默认值作为它的值,实例如下:

>>>def  func(a,b=3):

              print(a*b)

>>>func(5)

15

>>>func(5,4)

20

可见,第一次调用时,没有传入第二个参数,因此参数b默认为3,3*5=15

第二次调用传入了b为4,4*5=20

2.可变数量参数

通过在参数前加星号(*)来实现,且带星号的参数只能放在参数列表的最后。

在调用时,这些(0到多个)参数作为元组被传入函数,实例如下:

>>>def    func(a,*b):

                for   n  in  b:

                         a+=n

                return   a

>>>func(1,2,3,4,5)

15

在这个例子中,输入的参数为1,2,3,4,5,其中,a为数字1,b为元组(2,3,4,5)(元组:可理解为一组元素)  

3.参数的位置和名称传递

一般按照参数的位置传递,即函数定义中形参的位置和传入参数位置一一对应,例如,函数定义为:

def      fun(a,b,c,d)中,调用函数时,fun(1,3,5,6),表示传入的参数a=1,b=3,c=5,d=6,

如果参数很多,这种方式的可读性就会变差,因此出现了第二种方式:按照形参名称输入参数,这种方式参数之间的顺序可以随意调整,仍以def      fun(a,b,c,d)为例,其调用方式可以变成:

fun(b=3,c=5,a=1,d=6)达到相同的效果。

4.函数可以没有return,没有return时,没有返回值,return也可以返回多个值,使用元组保存。

5.在函数中定义的变量称为局部变量,仅在函数内部存在,函数结束后,局部变量将不存在。

全局变量是在函数外定义的变量,一般没有缩进,在程序执行过程中全过程有效。

在函数中,对于简单类型的变量如果不使用关键字global来声明一个全局变量,那么在函数中即使使用了与函数外一个全局变量名称相同的变量,也不会对全局变量造成影响。

而对于列表等类型的组合数据类型的全局变量,如果函数内部没有真实的创建同名变量,则该函数可以直接使用并修改全局变量的值,如果函数内部真实创建了一个同名变量,则对该变量的操作不会影响到全局变量。

三、函数的递归

函数调用自己本身的方式称为递归,最简单的递归实例就是计算一个数的阶乘。

该实例代码如下(计算n的阶乘):

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

 

这个函数中,很容易看出在第五行它对自身的调用,也是递归中比较容易理解的一个实例。

递归的两个关键特征,1是存在一个或多个基例,基例是确定的表达式,不需要再次递归;2是所有递归链都以基例结尾。

四、Python的68个内置函数

abs() id() round() exec() memoryview()
all() input() set() enumerate() next()
any() int() sorted() filter() object()
asci() len() str() format() property()
bin() list() tuple() frozenset() repr()
bool() max() type() getattr() setattr()
chr() min() zip() globals() slice()
complex() oct() bytes() hasattr() staticmethod()
dict() open() delattr() help() sum()
divmod() ord() bytearray() isinstance() super()
eval() pow() callable() issubclass() vars()
float() print() classmethod() iter() __import()__
hash() range() compile() locals()
hex() reversed() dir() map()

你可能感兴趣的:(Python,python,开发语言)