【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数

原创
ithorizon 8个月前 (09-01) 阅读数 69 #Python

Python中的链式调用、嵌套调用、递归、函数栈帧、参数默认值和关键字参数

一、链式调用

链式调用指的是将多个方法调用连接在一起,形成一个调用链,代码如下:

class Chain:

def __init__(self, path=''):

self._path = path

def __getattr__(self, attr):

return Chain(f'{self._path}/{attr}')

def __call__(self, attr):

return Chain(f'{self._path}={attr}')

chain = Chain()

result = chain.status.user.timeline.list()

print(result) # 输出:Chain('/status/user/timeline/list')

二、嵌套调用

嵌套调用是指在一个函数内部调用另一个函数。下面是一个嵌套调用的示例:

def outer_function(text):

def inner_function():

return text.upper()

return inner_function()

result = outer_function('hello')

print(result) # 输出:HELLO

三、递归

递归是指函数调用自身的过程。下面是一个计算阶乘的递归函数示例:

def factorial(n):

if n == 1:

return 1

else:

return n * factorial(n-1)

result = factorial(5)

print(result) # 输出:120

四、函数栈帧

函数栈帧是Python解释器为每个函数调用分配的一块内存区域,用于存储局部变量和返回地址等信息。递归调用时,函数栈帧的创建和销毁过程如下:

# 递归调用函数栈帧示例

def func1():

print('func1起初')

func2()

print('func1终结')

def func2():

print('func2起初')

func3()

print('func2终结')

def func3():

print('func3')

func1()

五、参数默认值

在Python中,可以为函数参数设置默认值。如果调用函数时未提供相应的参数值,将使用默认值。下面是一个参数默认值的示例:

def greet(name, message='早上好!'):

print(f'{message}, {name}')

greet('张三') # 输出:早上好!, 张三

greet('李四', '晚上好!') # 输出:晚上好!, 李四

六、关键字参数

关键字参数允许你以键-值对的形式向函数传递参数,使函数调用更灵活。以下是一个关键字参数的示例:

def person(name, age, **kwargs):

print(f'姓名:{name}, 年龄:{age}, 其他信息:{kwargs}')

person('王五', 30, city='北京', job='程序员') # 输出:姓名:王五, 年龄:30, 其他信息:{'city': '北京', 'job': '程序员'}


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Python


热门