Python相当于PHP的@

Ble*_*der 0 python exception-handling

是否有Python的Python等价物@

@function_which_is_doomed_to_fail();
Run Code Online (Sandbox Code Playgroud)

我一直用这个块:

try:
  foo()
except:
  pass
Run Code Online (Sandbox Code Playgroud)

但我知道必须有更好的方法.

有谁知道我如何Pythonicify该代码?


我认为在该代码中添加一些上下文是合适的:

for line in blkid:
  line = line.strip()
  partition = Partition()

  try:
    partition.identifier = re.search(r'^(/dev/[a-zA-Z0-9]+)', line).group(0)
  except:
    pass

  try:
    partition.label = re.search(r'LABEL="((?:[^"\\]|\\.)*)"', line).group(1)
  except:
    pass

  try:
    partition.uuid = re.search(r'UUID="((?:[^"\\]|\\.)*)"', line).group(1)
  except:
    pass

  try:
    partition.type = re.search(r'TYPE="((?:[^"\\]|\\.)*)"', line).group(1)
  except:
    pass

  partitions.add(partition)
Run Code Online (Sandbox Code Playgroud)

Gab*_*aru 5

您正在寻找的是反pythonic,因为:

蒂姆彼得斯
美丽的禅宗禅比丑陋更好.
显式优于隐式.
简单比复杂更好.
复杂比复杂更好.
Flat优于嵌套.
稀疏优于密集.
可读性很重要.
特殊情况不足以打破规则.
虽然实用性胜过纯洁.
错误不应该默默地传递.
除非明确沉默.
面对模棱两可,拒绝猜测的诱惑.
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
虽然这种方式起初可能并不明显,除非你是荷兰人.
现在比永远好.
虽然从未往往比好正确的现在.
如果实施很难解释,这是一个坏主意.
如果实现很容易解释,那可能是个好主意.
命名空间是一个很棒的主意 - 让我们做更多的事情吧!

在你的情况下,我会使用这样的东西:

match = re.search(r'^(/dev/[a-zA-Z0-9]+)', line)
if match:
    partition.identifier = match.group(0)
Run Code Online (Sandbox Code Playgroud)

你有3行而不是4行.