• 技术文章 >Python技术 >Python基础教程

    Python函数定义、函数调用详解

    silencementsilencement2019-06-29 10:34:16原创2984

    函数是 Python 程序的重要组成单位,一个 Python 程序可以由很多个函数组成。前面我们己经用过大量函数,如 len()、max() 等,使用函数是真正开始编程的第一步。

    比如在程序中定义了一段代码,这段代码用于实现一个特定的功能。问题来了,如果下次需要实现同样的功能,难道要把前面定义的代码复制一次?如果这样做实在太傻了,这意味着每次当程序需要实现该功能时,都要将前面定义的代码复制一次。

    正确的做法是,将实现特定功能的代码定义成一个函数,每次当程序需要实现该功能时,只要执行(调用)该函数即可。

    通俗来讲,所谓函数,就是指为一段实现特定功能的代码“取”一个名字,以后即可通过该名字来执行(调用)该函数。

    通常,函数可以接收零个或多个参数,也可以返回零个或多个值。从函数使用者的角度来看,函数就像一个“黑匣子”,程序将零个或多个参数传入这个“黑匣子”,该“黑匣子”经过一番计算即可返回零个或多个值。

    从函数定义者(实现函数的人)的角度来看,其至少需要想清楚以下 3 点:

    函数需要几个关键的需要动态变化的数据,这些数据应该被定义成函数的参数。

    函数需要传出几个重要的数据(就是调用该函数的人希望得到的数据),这些数据应该被定义成返回值。

    函数的内部实现过程。

    函数定义和调用

    在使用函数之前必须先定义函数,定义函数的语法格式如下:

    def 函数名(形参列表):
        //由零条到多条可执行语句组成的函数
        [return [返回值]]

    Python 声明函数必须使用 def 关键字,对函数语法格式的详细说明如下:

    函数名:从语法角度来看,函数名只要是一个合法的标识符即可;从程序的可读性角度来看,函数名应该由一个或多个有意义的单词连缀而成,每个单词的字母全部小写,单词与单词之间使用下画线分隔。

    形参列表:用于定义该函数可以接收的参数。形参列表由多个形参名组成,多个形参名之间以英文逗号(,)隔开。一旦在定义函数时指定了形参列表,调用该函数时就必须传入到应的参数值,也就是说,谁调用函数谁负责为形参赋值。

    在函数体中多条可执行语句之间有严格的执行顺序,排在函数体前面的语句总是先执行,排在函数体后面的语句总是后执行。

    下面程序定义了两个函数,井在程序中调用它们:

    # 定义一个函数,声明2个形参
    def my_max(x, y) :
        # 定义一个变量z,该变量等于x、y中较大的值
        z = x if x > y else y
        # 返回变量z的值
        return z
    # 定义一个函数,声明一个形参
    def say_hi(name) :
        print("===正在执行say_hi()函数===")
        return name + ",您好!"
    a = 6
    b = 9
    # 调用my_max()函数,将函数返回值赋值给result变量
    result = my_max(a , b) # ①
    print("result:", result)
    # 调用say_hi()函数,直接输出函数的返回值
    print(say_hi("孙悟空")) # ②

    上面程序中定义了两个函数:my_max() 与 say_hi(),并在程序 ① 号、② 号代码处分别调用了 my_max() 和 say_hi() 这两个函数。从下面的运行结果可以看出,当程序调用一个函数时,既可以把调用函数的返回值赋值给指定变量,也可以将函数的返回值传给另一个函数,作为另一个函数的参数。

    运行上面程序,将可以看到如下运行结果:

    result: 9
    ===正在执行say_hi()函数===
    孙悟空,您好!

    在函数体中使用 return 语句可以显式地返回一个值,return 语句返回的值既可是有值的变量,也可是一个表达式。

    例如上面的 my_max() 函数,实际上也可简写为如下形式:

    def my_max(x, y) :
        # 返回一个表达式
        return x if x > y else y
    专题推荐:函数
    上一篇:Python超级详细的变量命名规则 下一篇:Python逻辑运算符及其用法

    相关文章推荐

    • Python入门必读bool类型和比较运算符• Python深浅拷贝是什么• python生成器中的send()方法和next()方法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网