Python 函数
以下是这一节中,我们要来介绍的关于 Python 函数的知识点:
- 什么是函数
- 如何来创建函数
- 函数的类型
什么是 Python 函数
函数是一小块程序,它包含许多执行特定任务的单行或多行语句。假如说你有一个数千行执行不同任务的代码,那么你应该将程序划分为小模块(块),也就是将它们切割为不同的函数,这样可以提高代码的可读性并降低其复杂度。
如何来定义 Python 函数
以下是 Python 的定义函数的语法:
def functionName(arguments):
"""This is the definition of this function"""
statements
return returnParam
- 关键字
def
用于定义声明函数。 functionName
是函数的名称。arguments
是可选的,它参数提供了用于执行操作的输入值。- 冒号(
:
)放在函数头的结尾。 """This is the definition of this function"""
是一个函数文档说明,它是可选项,用来描述该函数的功能。statements
是函数主体,包括一行或多行代码。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 中的函数可以分为两种类型:
- 内置函数:预先定义的函数,用以执行特定任务。
- 自定义函数:由用户来定义,包含任意数量的语句,用来以执行用户定义的任务。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn