0
点赞
收藏
分享

微信扫一扫

python函数的使用

小铺有酒一两不够 2024-01-22 阅读 17

一、函数的定义

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()
举报

相关推荐

0 条评论