老师,我想问一下这串代码的执行顺序是怎样的,并且check_str(func)里面的参数为啥还可以写成func(*args,**kwargs)
def check_str(func):
def inner(*args,**kwargs):
result = func(*args,**kwargs)
if result =='ok':
return 'result is %s'%result
else:
return 'result is failed:%s'%result
return inner
@check_str
def test(data):
return data
result = test('no')
print(result)
27
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕凡
2021-10-13 10:20:50
同学,你好!
以上代码执行顺序:在调用test("no")时,将test函数作为参数传入给check_str(func)函数;将test函数的参数“no”传给了check_str(func)函数内部的inner( )函数,在inner( )函数中调用了test( )函数并将结果返回赋值给result变量,进行了判断后返回结果,最后将inner函数返回。
func(*args,**kwargs):func是check_str(func)接收到的test( )函数,*args,**kwargs是test( )函数的参数,所以func(*args,**kwargs)就是test("no"),test( )的函数可能是任意类型所以使用不定长参数*arg和**kwargs接收,祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星