Python 函数

Jinku Hu 2023年1月30日
  1. 什么是 Python 函数
  2. 如何来定义 Python 函数
  3. Python 函数示例
  4. Python 中函数的调用
  5. return 语句
  6. Python 变量的作用范围和生命周期
  7. 函数类型
Python 函数

以下是这一节中,我们要来介绍的关于 Python 函数的知识点:

  • 什么是函数
  • 如何来创建函数
  • 函数的类型

什么是 Python 函数

函数是一小块程序,它包含许多执行特定任务的单行或多行语句。假如说你有一个数千行执行不同任务的代码,那么你应该将程序划分为小模块(块),也就是将它们切割为不同的函数,这样可以提高代码的可读性并降低其复杂度。

如何来定义 Python 函数

以下是 Python 的定义函数的语法:

def functionName(arguments):
    """This is the definition of this function"""
    statements
    return returnParam
  1. 关键字 def 用于定义声明函数。
  2. functionName 是函数的名称。
  3. arguments 是可选的,它参数提供了用于执行操作的输入值。
  4. 冒号(:)放在函数头的结尾。
  5. """This is the definition of this function""" 是一个函数文档说明,它是可选项,用来描述该函数的功能。
  6. statements 是函数主体,包括一行或多行代码。
  7. return 也是可选项,它将结果返回给该函数的调用者。

Python 函数示例

def language(p):
    """Function to print a message"""
    print("Programming language:", p)

这里 language 定义了一个函数,它有一个从调用者传递的参数 p。在函数内部,有一个 docstring-函数文档说明和一个 print 语句来打印含有参数 p 的信息。

Python 中函数的调用

你可以从程序中的任何位置来调用已定义的函数,可以通过使用函数名称以及所需输入参数来调用该函数。

language("Python")
Programming language: Python

return 语句

return 语句将控制权转移回调用该函数的代码,它表示了函数定义在此结束。

return 的语法如下:

return [values_to_be_returned]

如果函数中没有 return 语句,则缺省返回一个 None 对象。

return 语句示例

def square(n):
    return n * n


print("Square of 4=", square(4))
Square of 4=16

在此代码中,square(n) 函数在 print 函数中被调用,4 作为输入参数被传递进去。在函数内部,有一个计算的达式-n*n,计算的结果返回到调用函数的位置(print 语句)。

Python 变量的作用范围和生命周期

变量的作用范围是该变量能被访问的有效范围。当在函数内部声明变量时,在函数的外部无法访问它,这种类型的变量称为局部变量,只能在声明它的函数内被访问到。

变量的生命周期是变量存在于内存中的时间。当在函数内声明变量时,当函数控制流程跳出该函数时,它的内存将被释放。

如以下示例:

def fun():
    a = 12
    print("Value of a inside function:", a)


a = 24
fun()
print("Value of a outside function:", a)
Value of a inside function: 12
Value of a outside function: 24

在这段代码中,在函数内部的变量 a 和函数外部的变量 a 是不同的变量。

如果你尝试从外部访问函数内部声明的变量,你将遇到错误 - NameError name 'x' is not defined。但是在函数外部声明的变量具有全局范围,可以从内部访问。

函数类型

Python 中的函数可以分为两种类型:

  1. 内置函数:预先定义的函数,用以执行特定任务。
  2. 自定义函数:由用户来定义,包含任意数量的语句,用来以执行用户定义的任务。
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook