2.4 函数

来源:互联网 发布:淘宝突然没流量了 编辑:程序博客网 时间:2024/06/03 20:01

  模块化程序设计是进行复杂程序设计的一种有效措施。其基本思想是将一个复杂的程序按功能进行分割,得到一些相对较小的独立模块,每一个模块都是功能单一、结构清晰、接口简单、易于理解的小程序,这些模块称为函数。函数可以被其他模块多次调用,甚至可以调用自己。其目的是提高了程序的模块性和代码的重复利用率,对大型程序的开发很有帮助。
  本章节主要介绍内置函数、模块函数和自定义函数。其中内置函数和模块函数由Python系统提供,统称为系统函数。而用户自己创建的函数称为自定义函数。

2.4.1 内置函数

  内置函数随着Pyhon解释器的运行而创建,在程序中可以随时调用。常用的内置函数有输出函数print()、类型函数type()等。下面再介绍一些针对本教程有用的内置函数。

1. range()函数

  range()函数生成一个整数列表,调用格式如下:

range([start, ] end [,step])

  range()函数产生的数字序列从start开始,默认是从0开始;序列到end结束,但不包含end;如果指定了可选的步长step,则序列按步长增加,默认为1。示例代码:

>>>list(range(2, 15, 3))[2, 5, 8, 11, 14]>>>list(range(5))[0, 1,  2, 3, 4, 5]

  以上是利用range()函数和list()函数产生一个列表。还可以利用rang()函数和tuple()函数产生一个元组。示例代码:

>>>tuple(range(2, 15, 3))(2, 5, 8, 11, 14)>>>tuple(range(5))(0, 1, 2, 3, 4)

2. 数值运算函数

  Python有些内置函数用于数值运算。

  • abs(x),返回x的绝对值,结果保持x的类型。x为复数时返回复数的模。示例代码:
>>>abs(-10)10>>>abs(-10.0)10.0>>>abs(3+4j)5.0
  • pow(x,y),返回x的y次幂,结果保持x或y的类型。示例代码:
>>>pow(2, 3)8
  • round(x [,n]),用于对浮点数进行四舍五入运算,返回值为浮点数。n是可选择参数,表示结果精确到小数点后指定位数。如果不提供n值,则返回与第一个参数最接近的整数,但仍然是浮点类型。
>>>round(3.46)3.0>>>round(3.14159, 3)3.142

3. 帮助函数

  通过Python系统提供的帮助函数如dir()和help()函数,可以查询有关函数的说明及用法,对使用者来说十分重要。
  dir()函数调用,其参数是想要查询的对象,它返回一个列表,其中包含要查询对象的所有属性和方法。示例代码:

>>>import math>>>dir(math)......

  用dir()函数查看数学模块math的属性和方法。此外,通过dir(bulletin)命令可以查看Python所有内置函数列表。
  查看某个函数对象的帮助信息可以使用help()函数。示例代码:

>>>help(str).,..>>>help(math.sqrt)

  编写实用的Python应用程序,可以充分利用丰富的系统资源,而不需要自己从原始的算法开始,从而显著提高设计的效率,这是Python的特点之一。读者可以根据需要随时查阅有关Python标准模块资料,以求事半功倍。

2.4.2 模块函数

1.模块导入

  Python的标准库包含很多模块,每个模块定义了很多有用的函数。在调用之前,先要使用import语句导入相应模块,格式如下:

import   模块名

示例代码:

>>>import math>>>math.sqrt(2)1.4142135623730951

  另外还有一种导入模块的方法,格式如下:

from   模块名   import   函数名

  该语句从指定模块中导入指定函数的定义,这样调用模块中的函数时,不需要在前面加上“模块名.”。示例代码:

>>>from math import sqrt>>>sqrt(2)1.4142135623730951

  如果希望导入模块中的所有函数定义,则函数名用“*”表示。格式如下:

from 模块名 import *

示例代码:

>>>from math import *>>>abs(-2)2

  这样调用指定模块中的任意函数时,都不需要在前面加“模块名.”。使用这种方法固然省事方便,但当多个模块有同名的函数时,会引起混乱,应谨慎使用。
  Python中常用的模块有很多,如提供丰富数学运算函数的数学库模块(math),还有用来生成随机数函数的随机数模块(random),下面做详细讲解。其他模块将在后续章节陆续介绍。

2.math模块函数

  math模块主要处理数学相关的运算,其中定义的常用数学常量和函数如下。

  1. 数学常量
      e,返回常数e(自然对数的底)。
      pi,返回圆周率π的值。
  2. 绝对值和平方根
      fabs(x),返回x的绝对值(返回值为浮点数)。例如fabs(-10)返回10.0。
      sqrt(x),返回x的平方根。例如sqrt(4)返回2.0。
  3. 幂函数和对数函数
      pow(x,y),返回x的y次幂,例如pow(2,3)返回8.0。
      exp(x),返回e的x次幂,例如exp(1)返回2.718281828459045。
      log(x [,base]),返回x的自然对数,例如log(e)返回1.0。可以使用base参数来改变对数的底,例如log(100,10)返回2.0。
      log10(x),返回x的常数对数。例如log10(100)返回2.0。
  4. 取整和求余函数
      ceil(x),对x向上取整,例如ceil(4.2)返回5。
      floor(x),对x向下取整,例如floor(4,2)返回4。
      fmod(x,y),返回求x/y的余数,返回值是浮点型,例如fmod(7, 4)返回3.0。
  5. 弧度角度转换函数
      degree(x),将弧度转换为角度,例如degree(pi)返回180.0。
      radians(x),将角度转换为弧度,例如radians(90)返回1.5707963267948966。
  6. 三角函数和反三角函数
      sin(x),返回x的正弦值(x为弧度)。例如sin(pi/2)返回1.0。
      cos(x),返回x的余弦值(x为弧度)。例如cos(pi)返回-1.0。
      tan(x),返回x的正切值(x为弧度)。例如tan(pi/4)返回0.999999(数学上为1)。
      asin(x),返回x的反正弦值(返回值为弧度)。例如degrees(asin(1))返回90.0。
      acos(x),返回x的反余弦值(返回值为弧度)。例如degrees(acos(-1))返回180.0。
      atan(x),返回x的反正切值(返回值为弧度)。例如degrees(atan(1))返回45.0。

3.random模块函数

  random模块的作用是引入随机数,其中定义的常用随机函数如下。

  • random(),随机生成一个[0, 1)范围内的实数,注意是半闭半开区间,即不包括数值1。
  • randrange(a,b,c),随机生成一个[a, b)范围内以c递增的整数,省略c时以1递增,省略a时初值为0。
  • randint(a, b),随机生成一个[a, b]范围的整数,注意是全闭合区间,即包括a值和b值,等价于randrange(a, b+1)。

2.4.3 自定义函数

1.函数的定义

  Python函数的定义包括对函数名、函数的参数与函数功能的描述。自定义函数格式如下:

def 函数名([形式参数表列]):        函数体

示例代码:

>>>def fun(x, y):>>>      return x**2 + y**2

  以上代码表示接受两个输入参数,返回它们的平方和。对函数定义的几点说明:

  1. 函数定义以关键字def(英文define的简写)开始,后跟函数名和括号括起来的参数,最后以冒号结束。其中函数名是一个标识符,满足Python语法的标识符命名规则。参数没有值的概念,只说明这些参数和某种运算或操作之间的关系,根据需要而设定,也称为形式参数(简称形参),形参可以缺省,但括号必须保留。
  2. 函数定义的缩进部分成为函数体,描述函数的功能。函数体中使用return语句传递函数的返回值。若函数返回多个值,此多个值以元组形式返回;若无return语句,则函数返回空(None)。
  3. Python还允许函数体为空的函数,其形式如下
def 函数名():        pass

2. 函数的调用

  函数定义后,在程序中需要通过对函数的调用来执行该函数,完成函数的功能。函数调用的一般形式:

函数名([参数1[, 参数2...]])

  调用函数时,和形式参数对应的参数因为有值的概念,所以称为实际参数(简称实参)。实参和形参在数量、类型和顺序上应严格一致,否则会发生类型不匹配的错误。也可以无参函数调用,虽然没有实参,但函数名后的括号不能省略。示例代码:

>>>print(fun(3, 4))25

  函数要先定义后使用。当Python遇到一个函数调用时,在调用处暂停执行,被调用函数的形参被赋予实参的值,然后转向执行被调用函数,执行完成后,返回调用处继续执行主调程序的语句。

3. 匿名函数

  匿名函数是指没有函数名的简单函数,只可以包含一个表达式,不允许包含其他复杂语句,表达式的结果是函数的返回值。定义格式如下:

lambda [参数1[,参数2,...,参数n]]:表达式

  lambda是匿名函数的关键字,匿名函数也称lambda函数。匿名函数允许零个或多个参数,但只有一个返回值,返回值就是该表达式的结果。示例代码:

>>>lambda x, y : x + y

  匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。示例代码:

>>>f = lambda x, y : x + y>>>f(5, 10)15

  该匿名函数等价于使用def关键字以标准方式定义的函数,示例代码:

>>>def f(x ,y):>>>        return  x + y

  用匿名函数有个好处,因为函数没有名字,所以不必担心函数名冲突。

原创粉丝点击