Python3基础-函数作用域

1. 函数的定义

在Python中,函数是一段可以重复使用的程序代码块。我们可以使用def关键字来定义函数。函数定义包括以下几个部分:

函数名: 命名规则同变量命名规则,不能以数字开头,不能使用保留字。

参数列表: 可以是任意个数的参数,每个参数之间用逗号分隔。

函数体: 函数体中的代码块是函数的执行语句,可以包含多行代码。

返回值: 不一定需要返回值,若需要则可以使用return语句。

函数的定义示例如下:

def add(x, y):

result = x + y

return result

在上面的示例中,我们定义了一个名为add的函数,它有两个参数xy,函数体中的代码实现了两个参数的加法运算,并将结果用return关键字返回。

2. 函数作用域

在Python中,函数作用域是指函数内部可以访问的变量的范围。Python中变量的作用域分为以下几种:

本地作用域: 也称为局部作用域,变量定义在函数内部。

嵌套作用域: 变量定义在函数嵌套层次内。

全局作用域: 变量定义在函数外部。

内置作用域: Python内置的作用域,包含Python语言内置的函数和常量。

注: Python中可以使用globalnonlocal关键字来修改变量的作用域。

2.1 本地作用域

在函数内部定义的变量就是本地变量,只能在函数内部访问。当函数执行完毕后,本地变量就会被释放。

下面的示例代码说明了本地变量:

def add(x, y):

result = x + y # result是本地变量

return result

print(add(1, 2)) # 输出3

print(result) # 报错,result未定义

2.2 嵌套作用域

当函数中包含另一个函数时,内部函数可以访问外部函数的变量。内部函数中定义的变量称为嵌套变量,即嵌套在外部函数的变量作用域中。

下面的示例代码说明了嵌套变量:

def outer():

x = 1

def inner():

nonlocal x # 修改嵌套变量x

x += 1

inner()

print(x) # 输出2

outer()

在上面的示例中,函数outer中定义了变量x,内部又定义了函数inner,函数inner可以访问外部函数outer中定义的变量x,并修改它的值。最终输出2。

2.3 全局作用域

全局变量是在函数外申明的变量,可以被所有函数访问,但是不能在函数内部修改全局变量的值,需要使用global关键字。

x = 10

def print_x():

print(x)

def change_x():

global x

x = 20

print_x() # 输出10

change_x()

print_x() # 输出20

在上面的示例中,我们先定义了全局变量x,并在print_x函数中访问它的值,在change_x函数中使用global关键字修改它的值,最终再次调用print_x函数输出修改后的值。

2.4 内置作用域

内置变量包含了Python语言内置的函数和常量,可以在任何地方直接访问到这些内置变量。

下面的示例代码说明了内置变量:

import builtins

print(dir(builtins))

dir(builtins)可以列出所有内置变量,包括absintstrTrue等。

3. 闭包

闭包是指在函数中定义并使用了外部函数作用域中变量的函数,这个被使用的外部变量称为非局部变量。闭包可以返回一个函数或者可以被作为函数的参数直接调用。

下面的示例代码演示了闭包的用法:

def add(x):

def inner(y):

return x + y

return inner

add5 = add(5)

print(add5(3)) # 输出8

在上面的示例中,函数add返回内部函数inner,此函数使用了add中的变量x。我们可以将返回的函数保存在变量中,在下一步调用时再传入函数需要的参数。

总结

本文主要讲解了Python函数作用域以及闭包的相关知识。我们可以根据需要灵活运用这些知识来编写自己的Python程序。

后端开发标签