|
|
51CTO旗下网站
|
|
移动端

2.4.1 函数(2)

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍函数。

作者:李金来源:机械工业出版社|2018-05-03 20:46

2.4.1 函数(2)

4.接受不定数目参数的函数

有些函数可以接受不定数目的参数,如max()和 min()等。不定数目参数的功能,可以在定义函数时使用星号“*”来实现。

例如,我们修改add()函数,使其能实现两个或多个值的相加:

  1. In [14]: def add(x, *ys):  
  2.     ...:  total = x 
  3.     ...:  for y in ys:  
  4.     ...:      total += y  
  5.     ...:  return total  
  6.     ...:  
  7.  
  8. In [15]: add(1, 2, 3, 4) Out[15]: 10 

参数中的*ys是一个可变数目的参数,我们可以把它看成一个元组。

调用 add(1, 2, 3, 4)时,第一个参数 1传给了 x,剩下的参数组成一个元组传给了ys,因此,ys的值为(2, 3, 4)。

我们还可以使用任意键值作为参数,这种功能可以在函数定义时使用两个星号“**”实现:

  1. In [16]: def add(x, **ys):  
  2.     ...:  total = x 
  3.     ...:  for k, v in ys.items():  
  4.     ...:      print "adding", k  
  5.     ...:      total += v  
  6.     ...:  return total  
  7.     ...:  
  8.  
  9. In [17]: add(1, y=2z=3w=4) adding y adding z adding w Out[17]: 10 

**ys表示这是一个不定名字的参数,它本质上是一个字典。

调用add(1, y=2, z=3, w=4)时,ys为字典{'y': 2, 'z': 3, 'w': 4}。

这两种模式可以混用,不过要按顺序传入参数,先传入位置参数,后传入关键字参数:

  1. In [18]: def foo(*args, **kwargs):    ...: print args    ...: print kwargs    ...:  
  2. In [19]: foo(2, 3, x='bar'z=10)   
  3. (2, 3)   
  4. {'x': 'bar', 'z': 10} 

反过来,我们可以在元组或者字典前加星号,将其作为参数传递给函数,不过这样的用法不是特别常见:

  1. In [20]: def add(x, y):  
  2. ...: """Add two numbers"""  
  3. ...: a = x + y  
  4. ...: return a  
  5. ...:  
  6. In [21]: z = (2, 3)  
  7. In [22]: add(*z)  
  8. Out[22]: 5  
  9. In [23]: w = {'x': 2, 'y': 3}  
  10. In [24]: add(**w)  
  11. Out[24]: 5 

5.返回多个值的函数

函数可以返回多个值。例如,下面的函数返回一个序列的最大值和最小值:

  1. In [25]: def min_max(x):  
  2. ...: return min(x), max(x)  
  3. ...:  
  4. In [26]: t = [1, 3, 5, 7, 9]  
  5. In [27]: a, b = min_max(t)  
  6. In [28]: a  
  7. Out[28]: 1  
  8. In [29]: b  
  9. Out[29]: 9 

事实上,Python返回的是一个元组,只不过元组的括号被省略了。对于返回的元组,我们使用了 Python的多变量赋值机制将它赋给了两个值:

  1. In [30]: min_max(t)  
  2. Out[30]: (1, 9) 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

开源osCommerce 轻松架设专业电子商务平台

osCommerce是一款免费的、开放源代码的专业电子商务解决方案。本书以通俗易懂的语言向读者展示了该软件强大的功能和简易的操作方法,主要内...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊