Python局部函数

Python局部函数教程

在大多数编程语言中,函数 的定义一般只能在 全局作用域,即定义的函数都是全局函数,而在 Python 中,函数不仅可以定义在全局作用域,还可以在函数内部定义函数。

在函数内部定义的函数,被称为局部函数,局部函数对外部是隐藏的,局部函数只能包含该函数的函数体内调用。

Python局部函数详解

语法

def fun():
    def func1():
        pass
    func1()

说明

我们首先定义了一个 fun 函数,接着我们在函数 fun 内部,再次定义了一个函数 func1,并且在函数 func 的内部调用了函数 func1。

案例

Python局部函数

在函数内部定义并调用函数

print("嗨客网(www.haicoder.net)")
def print_info():
    def print_start():
        print("====Start======")
    def print_end():
        print("====End======")
    print_start()
    print("Site:HaiCoder, Module:Python")
    print_end()
# 在函数内部定义并调用函数
print_info()

程序运行后,控制台输出如下:

47_python局部函数.png

我们定义了一个函数 print_info,接着,我们在函数 print_info 里面再次定义了两个函数,分别为 print_start 和 print_end。

同时,我们在函数 print_info 里面调用了函数 print_start 和 print_end。

Python局部函数

在函数内部定义并调用函数

print("嗨客网(www.haicoder.net)")
def num_handle(t, num1, num2):
    def add(num1, num2):
        return num1 + num2
    def sub(num1, num2):
        return num1 - num2
    def mul(num1, num2):
        return num1 * num2
    if t == "add":
        return add(num1, num2)
    if t == "sub":
        return sub(num1, num2)
    if t == "mul":
        return mul(num1, num2)
# 在函数内部定义并调用函数
add_result = num_handle("add", 10, 20)
print("add_result =", add_result)
sub_result = num_handle("sub", 10, 20)
print("sub_result =", sub_result)
mul_result = num_handle("mul", 10, 20)
print("mul_result =", mul_result)

程序运行后,控制台输出如下:

48_python局部函数.png

我们定义了一个函数 num_handle,该函数接受三个参数,一个参数 t,表明我们需要对后面两个参数 num1 和 num2 的处理方式。

接着,我们在函数 num_handle 里面又定义了三个函数,分别为 add、sub 和 mul,三个函数的功能分别为:将两个参数相加、将两个参数相减和将两个参数相乘。

同时,在函数 num_handle 里面,我们使用 if 判断 t 的值,对不同的 t 的值,我们调用不同的内部函数,对传入的参数进行处理。

Python局部函数总结

在大多数编程语言中,函数的定义一般只能在全局作用域,即定义的函数都是全局函数,而在 Python 中,函数不仅可以定义在全局作用域,还可以在函数内部定义函数。

在函数内部定义的额函数,被称为局部函数,局部函数对外部是隐藏的,局部函数只能包含该函数的函数体内调用。 Python 局部函数:

def fun():
    def func1():
        pass
    func1()