博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python函数深入
阅读量:7145 次
发布时间:2019-06-29

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

  hot3.png

Python的函数参数除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数。

1.默认参数

定义含有参数的函数:

def power(x):    return x * x

当我们调用power函数时,必须传入有且仅有的一个参数x:

>>> power(5)25>>> power(15)225

定义含有默认参数的函数: 默认参数就排上用场了。由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2:

def power(x, n=2):    s = 1    while n > 0:        n = n - 1        s = s * x    return s

这样,当我们调用power(5)时,相当于调用power(5, 2):

>>> power(5)25>>> power(5, 2)25

注:

一:必选参数在前,默认参数在后,否则Python的解释器会报错

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

2.可变参数

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

def calc(numbers):    sum = 0    for n in numbers:        sum = sum + n * n    return sum

但是调用的时候,需要先组装出一个list或tuple:

>>> calc([1, 2, 3])14>>> calc((1, 3, 5, 7))84

如果利用可变参数,调用函数的方式可以简化成这样:

>>> calc(1, 2, 3)14>>> calc(1, 3, 5, 7)84

所以,我们把函数的参数改为可变参数:

def calc(*numbers):    sum = 0    for n in numbers:        sum = sum + n * n    return sum

定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

>>> calc(1, 2)5>>> calc()0

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

>>> nums = [1, 2, 3]>>> calc(nums[0], nums[1], nums[2])14

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

>>> nums = [1, 2, 3]>>> calc(*nums)14

转载于:https://my.oschina.net/clgo/blog/669151

你可能感兴趣的文章
Win10任务栏假死问题解决方案
查看>>
[UWP]为附加属性和依赖属性自定义代码段(兼容UWP和WPF)
查看>>
mysql到JSP之间数据格式转换
查看>>
Thrift原理分析(一) 基本概念
查看>>
老司机避坑指南:如何快速搞定微服务架构?
查看>>
杨老师课堂之JavaScript案例全选、全不选、及反选
查看>>
开源编辑器 Atom 简化代码审查过程
查看>>
等等!这两个mysql慢查询的坑我已经替你们踩了
查看>>
【Python标准库:fileinput】优雅的读取文件
查看>>
“NO GENDER.NO BORDER.”,无性别服饰品牌“Bosie”获近千万元Pre-A轮融资
查看>>
用Python统计你的简书数据
查看>>
全票通过,百度 Doris 项目进入 Apache 基金会孵化器
查看>>
Retrofit2源码解析——网络调用流程(下)
查看>>
5G时代下的移动边缘计算(MEC)探索系列之二
查看>>
白衣天使要承包你的周末咯!快来3小时公益平台!
查看>>
用GitHub Issue取代多说,是不是很厉害?
查看>>
3 个实例带您了解如何快速迁移旧版的 Windows 应用程序
查看>>
第15天,JavaScript之事件介绍
查看>>
去除mysql 大小写敏感
查看>>
find: 路径必须在表达式之前:
查看>>