|
|
|
|
移动端

2.4.1 函数(1)

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

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

人工智能+区块链的发展趋势及应用调研报告


2.4 函数与模块

函数和模块是 Python可扩展性的一个重要组成部分。函数可以帮助我们复用代码,减少代码量;模块可以让我们使用已有的现成代码,避免重复工作。

2.4.1 函数(1)

在计算机科学中,函数(Function)是程序负责完成某项特定任务的代码单元,具有一定的独立性。函数通常通过名称进行调用,调用时用一个小括号接受参数,并得到返回值,例如:

  1. c = max(a, b) 

1.函数的定义

在 Python中,函数在定义时需要满足这样的规则:

使用关键字 def引导;

def后面是函数的名称,括号中是函数的参数,不同的参数用逗号“,”隔开,参数可以为空,但括号不能省略;

函数的代码块要缩进;

用一对"""包含的字符串作为函数的说明,用来解释函数的用途,可省略,在查看函数帮助时会显示;

使用关键字 return返回一个特定的值,如果省略,返回None。

例如,我们这样定义一个加法函数,它接受两个变量 x和 y,计算 x与 y的和 a,并返回 a的值:

  1. In [1]: def add(x, y):  
  2.    ...:      """Add two numbers"""  
  3.    ...:      a = x + y  
  4.    ...:      return a  
  5.    ...: 

2.函数的调用

定义好函数后,函数并不会自动执行。我们需要调用它才能执行相关的内容。

函数的调用使用函数名加括号的形式,参数放在括号中:

  1. In [2]: add(2, 3)   
  2. Out[2]: 5   
  3. In [3]: add('foo', 'bar')   
  4. Out[3]: 'foobar' 

Python不限定函数参数的输入类型,因此,我们可以使用不同类型的对象作为参数,只要这些传入的参数支持相关的操作。

对于add()函数,由于数字和字符串都支持加法操作,因此上面的调用都是合法的。

当传入的两个参数不支持加法时,Python会将抛出异常:

  1. In [4]: add(2, 'foo')  
  2. TypeError   Traceback (most recent call last)   
  3. <ipython-input-4-6f8dcf7eb280> in <module>()   
  4. ----> 1 add(2, "foo")   
  5. <ipython-input-1-e831943cfaf2> in add(x, y)  
  6.  
  7.  1 def add(x, y):  
  8.  2    """Add two numbers"""   
  9. ----> 3     a = x + y  
  10.  4    return a   
  11.  
  12. TypeError: unsupported operand type(s) for +: 'int' and 'str' 

当传入的参数数目与实际不符时,也会抛出异常:

  1. In [5]: add(1, 2, 3)  
  2. TypeError   Traceback (most recent call last)   
  3. <ipython-input-5-ed7bae31fc7d> in <module>()   
  4. ----> 1 add(1, 2, 3)   
  5.  
  6. TypeError: add() takes exactly 2 arguments (3 given)   
  7. In [6]: add(1)   
  8.  
  9. TypeError   Traceback (most recent call last)   
  10. <ipython-input-6-ed7bae31fc7d> in <module>()   
  11. ----> 1 add(1)   
  12.  
  13. TypeError: add() takes exactly 2 arguments (1 given) 

传入参数时,Python提供了两种模式,第一种是按照参数的顺序传入,另一种是使用键-值模式,按照参数名称传入参数。

例如,使用键-值模式,上面的例子可以写成:

  1. In [7]: add(x=2y=3)   
  2. Out[7]: 5   
  3. In [8]: add(x='foo'y='bar')   
  4. Out[8]: 'foobar'  

两种模式可以混用:

  1. In [9]: add(2, y=3) Out[9]: 5 

在混合使用时,需要注意不能给同一个值赋值多次,类似于 add(2, x=3)的形式会抛出异常。

3.带默认参数的函数

我们可以给函数参数设定默认值,默认参数需要在定义设定。

例如,定义一个一元二次函数,并让参数a、b、c带有默认值:

  1. In [10]: def quad(x, a=1b=0c=0):  
  2.     ...: return a * x ** 2 + b * x + c  
  3.     ...: 

定义时,所有带默认值的参数必须放在不带默认值的参数后面。

只传入x,其他的都用默认参数:

  1. In [11]: quad(2.0)  
  2. Out[11]: 4.0 

传入x和b:

  1. In [12]: quad(2.0, b=3)  
  2. Out[12]: 10.0 

传入x、a和c,参数b用默认:

  1. In [13]: quad(2.0, 2, c=4)  
  2. Out[13]: 12.0 

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

51CTO读书频道二维码


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

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

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

读 书 +更多

无懈可击的Web设计

一个网站,无论视觉上多美观或者内容多丰富,如果它不能适应各种浏览情况并能面向尽可能广泛的用户群,那它就不算是真正成功的网站。本书提...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊