博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
06 Python之函数调用与定义
阅读量:1887 次
发布时间:2019-04-26

本文共 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]

转载地址:http://bdzdf.baihongyu.com/

你可能感兴趣的文章
磁盘爆满,服务异常同时MySQL报“Table ** is marked as crashed and should be repaired”问题解决
查看>>
a标签中href调用js的几种方法
查看>>
Eclipse中使用SVN的使用
查看>>
JSON.parse和eval的区别
查看>>
Django项目实战----添加支付宝支付
查看>>
DRF框架---前言(简单使用)
查看>>
字符串外面是b“ “的转换 -亲测有效
查看>>
npy文件和pkl文件的保存和读取
查看>>
Kafka为什么这么快?
查看>>
Java 生产者和消费者面试题
查看>>
本机电脑连接虚拟机redis失败解决方法
查看>>
【Scala 教程】Scala 集合类型
查看>>
JAVA 线程同步机制 synchronized
查看>>
MySQL 安装教程(无脑版)
查看>>
IDEA 怎么删除一个Module
查看>>
走进数据科学:最好是通过比网课更好的方法
查看>>
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽
查看>>
10种算法一文打尽!基本图表算法的视觉化阐释
查看>>
未来属于人工智能工程师,但成功转型不容易
查看>>
科技界“挠头”:困扰科技界可持续发展的难题
查看>>