python函数调用与返回_python – “深度返回”一直回到第一个函数调用

假设我有两个(或更多)函数.一个是更高级别,通过调用不同的其他功能处理东西.如果其中一个函数失败(例如数学错误),我不仅要“中止”该函数,还要调用那个函数.在我的情况下,我需要这个来逃避错误,避免完成所有计算的其余部分,而不退出整个过程(这也将终止我的GUI).相反,我希望脚本继续运行,但回到最高级别.

这是我原始问题的抽象:

def levelA(x):

xx = levelB(x=x)

xx *= 2

return xx

def levelB(x):

if x==0: return

y = 10 / x

return y

x = 0

print (levelA(x=x))

当值10除以x时,使用值0初始化x将导致levelB崩溃.所以我首先确保x与0不同.如果不是,则通过调用return来中止该函数.现在,levelA希望继续将levelB的结果加倍,在x = 0的情况下,它是“无”,然后我们再次发生崩溃.

当然,我能做的就是插入这条线

if xx is None: return

在做xx * = 2之前.但在我的实际情况中,不仅有一个额外的级别,而是2或甚至3,并且有许多不同的函数被调用.我想避免检查函数的每个输出是否有错误.

所以我的问题是:我可以以某种方式回到第一个函数调用并跳过介于两者之间的函数吗?像“深度回归”的东西?

解决方法:

发明了例外来处理你描述的情况.所以,例如:

In [72]: def f1(x):

...: return f2(x)

...:

In [73]: def f2(x):

...: return f3(x)

...:

In [74]: def f3(x):

...: if x > 0:

...: return x

...: else:

...: raise ValueError("f3 called with negative argument")

...:

In [75]: try:

...: print(f1(-2))

...: except ValueError as e:

...: print(e)

...:

f3 called with negative argument

标签:python,function,return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值