# Python 函数

> 原文： [https://www.programiz.com/python-programming/function](https://www.programiz.com/python-programming/function)

#### 在本文中，您将了解函数，函数是什么，函数的语法，组件和类型。 此外，您还将学习在 Python 中创建函数。

## Python 中的函数是什么？

在 Python 中，函数是一组执行特定任务的相关语句。

函数有助于将我们的程序分解为较小的模块化块。 随着我们的计划变得越来越大，函数使其变得更有组织性和可管理性。

此外，它避免了重复并使代码可重复使用。

### 函数语法

```py
def function_name(parameters):
	"""docstring"""
	statement(s)
```

上面显示的是由以下组件组成的函数定义。

1.  关键字`def`，用于标记函数头的开始。
2.  用于唯一标识函数的函数名称。 函数命名遵循相同的[规则，即在 Python](/python-programming/keywords-identifier#rules) 中编写标识符。
3.  通过其将值传递给函数的参数（参数）。 它们是可选的。
4.  冒号（`:`）标记函数头的结尾。
5.  可选的文档字符串（docstring），用于描述函数的功能。
6.  组成函数体的一个或多个有效 python 语句。 语句必须具有相同的缩进级别（通常为 4 个空格）。
7.  可选的`return`语句，用于从函数返回值。

### 函数示例

```py
def greet(name):
    """
    This function greets to
    the person passed in as
    a parameter
    """
    print("Hello, " + name + ". Good morning!")
```

### 如何在 python 中调用函数？

定义函数后，我们可以从另一个函数，程序甚至 Python 提示符下调用它。 要调用函数，我们只需键入带有适当参数的函数名称即可。

```py
>>> greet('Paul')
Hello, Paul. Good morning!
```

**注意**：尝试在带有函数定义的 Python 程序中运行以上代码，以查看输出。

```py
def greet(name):
    """
    This function greets to
    the person passed in as
    a parameter
    """
    print("Hello, " + name + ". Good morning!")

greet('Paul')
```

* * *

## 文档字符串

函数头之后的第一个字符串称为 docstring，是文档字符串的缩写。 简要说明了函数的作用。

尽管是可选的，但文档是一种好的编程习惯。 除非您记得上周的晚餐时间，否则请务必记录您的代码。

在上面的示例中，我们在函数标头的正下方有一个文档字符串。 我们通常使用三引号，以便文档字符串可以扩展到多行。 该字符串可作为函数的`__doc__`属性使用。

**例如**：

尝试将以下内容运行到 Python shell 中以查看输出。

```py
>>> print(greet.__doc__)

    This function greets to
    the person passed in as
    a parameter
```

要了解有关 Python 中的文档字符串的更多信息，请访问 [Python 文档字符串](/python-programming/docstrings)。

* * *

## `return`语句

`return`语句用于退出函数并返回到调用它的位置。

### `return`语法

```py
return [expression_list]
```

该语句可以包含一个被求值的表达式并返回值。 如果该语句中没有表达式，或者`return`语句本身不存在于函数中，则该函数将返回`None`对象。

**例如**：

```py
>>> print(greet("May"))
Hello, May. Good morning!
None
```

此处，`None`是返回值，因为`greet()`直接打印名称并且不使用`return`语句。

* * *

### `return`示例

```py
def absolute_value(num):
    """This function returns the absolute
    value of the entered number"""

    if num >= 0:
        return num
    else:
        return -num

print(absolute_value(2))

print(absolute_value(-4))
```

**输出**

```py
2
4
```

* * *

## Python 中的函数如何工作？

![How function works in Python?](img/7910dcce01330177bdd83d227dedfda0.png "How function works in Python?")

Python 中的函数原理



* * *

## 变量的范围和寿命

变量的范围是程序中可以识别该变量的部分。 从函数外部看不到在函数内部定义的参数和变量。 因此，它们具有本地范围。

变量的生存期是变量在内存中退出的时间。 函数内部变量的生存期与函数执行的时间一样长。

一旦我们从函数返回，它们就会被销毁。 因此，函数无法记住其先前调用中的变量值。

这是一个示例，说明函数内部变量的范围。

```py
def my_func():
	x = 10
	print("Value inside function:",x)

x = 20
my_func()
print("Value outside function:",x)
```

**输出**：

```py
Value inside function: 10
Value outside function: 20
```

在这里，我们可以看到`x`的初始值是 20。 即使函数`my_func()`将`x`的值更改为 10，它也不会影响功能外部的值。

这是因为函数内部的变量`x`与外部的变量不同（局部于函数）。 尽管它们具有相同的名称，但是它们是两个具有不同作用域的不同变量。

另一方面，从外部可以看到函数外部的变量。 它们具有全局范围。

我们可以从函数内部读取这些值，但不能更改（写入）它们。 为了在函数外部修改变量的值，必须使用关键字`global`将它们声明为全局变量。

* * *

## 函数类型

基本上，我们可以将函数分为以下两种类型：

1.  [内置函数](/python-programming/built-in-function)-Python 内置的函数。
2.  [用户定义的函数](/python-programming/user-defined-function)-用户自己定义的函数。