Python异常示例LBYL vs EAFP

2024-04-25 14:13:38 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我想我有了在Python中使用EAFP的想法,但是在应用它时,我自己的一个例子让代码的可读性变差了。我正在编写一个简单的密码生成器函数:

def generatePassword(length, letters, numbers, puntuation):

其中length是一个int,其他参数是boolean,用于描述组成密码的可能字符。在

如果所有3个布尔参数都为False,我需要引发一个异常。使用LBYL方法,这很简单(而且可读!),但这似乎不是Python中的最佳实践。在

如果所有3个参数均为False,则函数中的此行将引发异常:

^{pr2}$

charSet是基于Boolean参数创建的,因此如果它们都是False,那么charSet将是空字符串。然后随机库将引发一个索引器错误。好吧,我捕捉到异常并提出自己的(ValueError?)。在

首先,这样做是正确的吗?也许只是我自己,但我发现有点做作——错误看起来很模糊,可能会使代码的可读性降低?在我看来,更清楚的方法是从以下内容开始函数:

if not(letters or numbers or punctuation): raise ValueError('my error msg')

谢谢。在


Tags: or方法函数代码false密码参数错误
1条回答
网友
1楼 · 发布于 2024-04-25 14:13:38

在我看来,强制执行调用约定是LBYL的好地方。把三个参数都取出来,这样就可以把所有的函数都取错了。我也一定要在docstring中描述这个限制。在

EAFP(同样,我的想法)更适合于您有合理的方法来处理可能出现的特定异常的情况。在

相关问题 更多 >

    热门问题