06 Python之函数调用与定义
发布日期:2021-06-29 15:44:22 浏览次数:2 分类:技术文章

本文共 2201 字,大约阅读时间需要 7 分钟。

函数调用与定义

1.调用函数

Python内置了很多有用的函数,可以直接调用

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数

也可以在交互式命令行通过help(abs)查看abs函数的帮助信息

help(abs)
Help on built-in function abs in module builtins:abs(x, /)    Return the absolute value of the argument.
abs(-10)
10

2.定义函数

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号;然后,在缩进块中编写函数体,函数的返回值用return语句返回

# 定义一个球两数之和的函数:def add_two(a,b):    return a+badd_two(10,22)
32

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并 将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None

return None可以简写为return

3.函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

3.1 默认参数

# 求x的平方def power(x):    return x*xpower(5)
25
# 求x的n次幂,设置n的默认值为2def power(x,n=2):    return x**npower(5,3)
125

设置默认参数时,有几点要注意:

1.必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)
2.如何设置默认参数

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数

使用默认参数有什么好处?最大的好处是能降低调用函数的难度

3.2 可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个

这里以数学题为例,给定一组数字a,b,c…,计算a+b+c…

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c,…作为一个list或tuple传进来,这样。函数可以定义如下:

def calc(numbers):    amount = 0    for num in numbers:        amount += num    return amountnumbers = [100,200,3,4]calc(numbers)
307

如果利用可变参数,我们把函数的参数改为可变参数:

def calc(*numbers):    amount = 0    for num in numbers:        amount += num    return amountcalc(1,2,3,4,5,7)
22

3.3 关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def get_kwatgs(**kwargs):    print(kwargs)get_kwatgs(a=10,b="hello",c=["a",1,"bcd"])
{'a': 10, 'b': 'hello', 'c': ['a', 1, 'bcd']}

3.4 混合参数

在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

def func(a,b,c=0,*args,**kw):    print("a=",a,"b=","c=",c,"args=",args,"kw=",kw)func(10,20,30,"d","e","f",x=99,y="hello")
a= 10 b= c= 30 args= ('d', 'e', 'f') kw= {'x': 99, 'y': 'hello'}

4.匿名函数lambda

python使用 lambda来创建匿名函数

lambda只是一个表达式,函数体比def简单很多

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑

lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

# 定义lambda函数f = lambda  x: x*x[f(i) for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

转载地址:https://codingchaozhang.blog.csdn.net/article/details/89349171 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:07 Python之Numpy库
下一篇:05 Python之条件与循环

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月04日 18时17分44秒