优草派  >   Python

Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】

孙悦            来源:优草派

函数是Python编程中的重要部分,本文将围绕函数嵌套、命名空间、函数对象和闭包函数进行详解。

Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】

1. 函数嵌套

在Python中,允许在一个函数中定义另一个函数,这就是函数嵌套。函数嵌套有时可以更清晰地表达代码,而且可以避免全局变量的污染。例如,下面的代码生成了一个斐波那契数列:

```

def fib(n):

def fib_iter(a, b, count):

if count == 0:

return b

else:

return fib_iter(b, a+b, count-1)

return fib_iter(0, 1, n)

print(fib(5)) # 输出5

```

这里的`fib_iter`函数定义在`fib`函数内部,只有`fib`函数可以访问它。

2. 命名空间

命名空间是变量名和对象之间的映射关系。在Python中,每个函数都有自己的命名空间,使用局部变量可以避免全局变量的污染。在函数内部定义的变量只在该函数内部可见,称为局部变量;而在函数外部定义的变量称为全局变量。例如,下面的代码演示了如何使用局部变量和全局变量:

```

pi = 3.1416

def circle_area(radius):

pi = 3.14

area = pi * radius ** 2

print('圆的面积为:{}'.format(area))

circle_area(2) # 输出圆的面积为:12.56

print('pi={}'.format(pi)) # 输出pi=3.1416

```

这里的`pi`变量在`circle_area`函数内部被重新定义为3.14,不会影响到全局变量`pi`的值。

3. 函数对象

在Python中,函数也是对象。函数对象可以赋值给变量、作为参数传递给其他函数、从函数中返回。例如,下面的代码演示了如何将函数赋值给变量并调用该函数:

```

def say_hello(name):

print('Hello, ' + name + '!')

hello = say_hello

hello('Tom') # 输出Hello, Tom!

```

这里的`say_hello`函数被赋值给变量`hello`并调用了该函数,产生了和直接调用`say_hello`一样的效果。

4. 闭包函数

闭包函数是指在函数内部定义的函数,该函数可以访问外部函数的变量。在Python中,内部函数访问外部函数的变量时,可以使用`nonlocal`关键字来声明外部变量。例如,下面的代码生成了一个计数器函数:

```

def counter():

cnt = 0

def inc():

nonlocal cnt

cnt += 1

return cnt

return inc

c = counter()

print(c()) # 输出1

cnt = counter()

print(c()) # 输出2

```

这里的`counter`函数返回了一个闭包函数`inc`,每次调用`inc`函数时,`cnt`变量都会自增1,从而实现了计数器的功能。

本文介绍了四个和函数相关的概念:函数嵌套、命名空间、函数对象和闭包函数。通过这些概念的详细解释,您可以更好地理解Python中函数的使用方法。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行