赞
赏
在大多数编程语言中,函数 的定义一般只能在 全局作用域,即定义的函数都是全局函数,而在 Python 中,函数不仅可以定义在全局作用域,还可以在函数内部定义函数。
在函数内部定义的函数,被称为局部函数,局部函数对外部是隐藏的,局部函数只能包含该函数的函数体内调用。
def fun():
def func1():
pass
func1()
我们首先定义了一个 fun 函数,接着我们在函数 fun 内部,再次定义了一个函数 func1,并且在函数 func 的内部调用了函数 func1。
在函数内部定义并调用函数
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()
程序运行后,控制台输出如下:
我们定义了一个函数 print_info,接着,我们在函数 print_info 里面再次定义了两个函数,分别为 print_start 和 print_end。
同时,我们在函数 print_info 里面调用了函数 print_start 和 print_end。
在函数内部定义并调用函数
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)
程序运行后,控制台输出如下:
我们定义了一个函数 num_handle,该函数接受三个参数,一个参数 t,表明我们需要对后面两个参数 num1 和 num2 的处理方式。
接着,我们在函数 num_handle 里面又定义了三个函数,分别为 add、sub 和 mul,三个函数的功能分别为:将两个参数相加、将两个参数相减和将两个参数相乘。
同时,在函数 num_handle 里面,我们使用 if 判断 t 的值,对不同的 t 的值,我们调用不同的内部函数,对传入的参数进行处理。
在大多数编程语言中,函数的定义一般只能在全局作用域,即定义的函数都是全局函数,而在 Python 中,函数不仅可以定义在全局作用域,还可以在函数内部定义函数。
在函数内部定义的额函数,被称为局部函数,局部函数对外部是隐藏的,局部函数只能包含该函数的函数体内调用。 Python 局部函数:
def fun():
def func1():
pass
func1()