我有一个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函数吗?