相关疑难解决方法(0)

你会如何将这个从Perl翻译成Python?

我有一个Perl函数,它接受一个时间戳并返回未更改的时间戳(如果之前从未见过它)或者其他,它会附加一些字母以使其唯一:

sub uniqify($) {
  my $timestamp = shift;

  state $last_ts = -1;
  state $next_letter = 'A';

  if ($timestamp == $last_ts) {
    $timestamp .= $next_letter++;
  } else {
    $last_ts = $timestamp;
    $next_letter = 'A';
  }

  return $timestamp;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用值1,1,1和2调用它四次,它将返回1,然后是1A,然后是1B,然后是2.

注意:它只会被不断增加的时间戳调用,所以它不需要回忆它所见过的每一个,只是最后一个.

现在我需要将此函数转换为Python.我已经知道我可以用globals替换"state"变量(yuck!)或者可能将它们作为属性附加到函数中,但这些都不是特别优雅.

此外,Python没有类似Perl的魔法自动增量,如果你"++"是一个值为"A"的变量,它变为"B" - 或者如果它是"Z",它就变成"AA".所以这也是一个曲线球.

我是一个黑客攻击解决方案,但它真的很丑,难以阅读.从Perl到Python的翻译应该会产生相反的效果,对吧?:)所以我将此作为对SO用户的挑战.你能把它变成一个优雅的Python函数吗?

python perl

11
推荐指数
2
解决办法
1239
查看次数

标签 统计

perl ×1

python ×1