gpt4 book ai didi

python - 如何用 Pythonese 说 - 做某事,除非它导致错误(不诉诸多级 try/execpt block )

转载 作者:行者123 更新时间:2023-12-03 07:38:19 25 4
gpt4 key购买 nike

这有点难以解释,所以让我们希望我能连贯地表达这个问题:
说我有这个 list :

my_list = ["a string", 45, 0.5]
要了解问题出处的关键点是 my_list由另一个函数生成;我事先不知道 my_list ,特别是它的任何成员的长度和数据类型。
接下来,每次都说 <my_list>生成后,我想对其执行许多预定操作。例如,我想:
my_text = my_list[1]+"hello"
some_var = my_list[10]
mini_list = my_list[0].split('s')[1]
my_sum = my_list[7]+2
等等。这里的重点是它的大量操作。
显然,这些操作中的一些会在任何给定的 my_list 上成功。有些会失败,重要的是,那些失败的人会以不可预测的方式失败 错误 类型;但我需要在每一代 my_list 上运行所有这些.
一个明显的解决方案是在每个操作中使用 try/except:
try:
my_text = my_list[1]+"hello"
except:
my_text = "None"

try:
some_var = my_list[10]
except:
some_var = "couldn't do it"
等等。
但是对于大量的操作,这变得非常麻烦。我研究了关于多次尝试/异常(exception)的各种问题,但除非我遗漏了什么,否则他们不会解决这个问题。
根据某人的建议(抱歉,链接丢失),我尝试创建一个带有内置 try/except 的函数,创建这些操作的另一个列表,并将每个操作发送到该函数。类似的东西
def careful(op):
try:
return op
else:
return "None"
并将其与例如第一个操作一起使用:
my_text = careful(my_list[1]+"hello")
问题是python似乎评估了 careful()在它被发送到函数之前的参数并且在它可以被捕获之前生成错误......
所以我想我正在寻找一种可以执行以下操作的三元运算符形式:
my text = my_list[1]+"hello" if (this doesn't cause any type of error) else "None"
但是,如果存在的话,我找不到它......
欢迎任何想法,并为长篇文章感到抱歉。

最佳答案

也许是这样的?

def careful(op, default):
ret = default
try:
ret = computation()
else:
pass
return ret

关于python - 如何用 Pythonese 说 - 做某事,除非它导致错误(不诉诸多级 try/execpt block ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62937987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com