美文网首页
2.4 函数

2.4 函数

作者: 操作系统 | 来源:发表于2017-03-12 23:33 被阅读0次

    模块化程序设计是进行复杂程序设计的一种有效措施。其基本思想是将一个复杂的程序按功能进行分割,得到一些相对较小的独立模块,每一个模块都是功能单一、结构清晰、接口简单、易于理解的小程序,这些模块称为函数。函数可以被其他模块多次调用,甚至可以调用自己。其目的是提高了程序的模块性和代码的重复利用率,对大型程序的开发很有帮助。
    本章节主要介绍内置函数、模块函数和自定义函数。其中内置函数和模块函数由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,返回圆周率π的值。
    1. 绝对值和平方根
      fabs(x),返回x的绝对值(返回值为浮点数)。例如fabs(-10)返回10.0。
      sqrt(x),返回x的平方根。例如sqrt(4)返回2.0。
    2. 幂函数和对数函数
      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。
    3. 取整和求余函数
      ceil(x),对x向上取整,例如ceil(4.2)返回5。
      floor(x),对x向下取整,例如floor(4,2)返回4。
      fmod(x,y),返回求x/y的余数,返回值是浮点型,例如fmod(7, 4)返回3.0。
    4. 弧度角度转换函数
      degree(x),将弧度转换为角度,例如degree(pi)返回180.0。
      radians(x),将角度转换为弧度,例如radians(90)返回1.5707963267948966。
    5. 三角函数和反三角函数
      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
    

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

    相关文章

      网友评论

          本文标题:2.4 函数

          本文链接:https://www.haomeiwen.com/subject/ycdagttx.html