【问题标题】:Perl to python shift translationPerl 到 python 的移位翻译
【发布时间】:2016-01-04 05:40:16
【问题描述】:

我是一名学习 Python 和 Perl 的学生。 在我们的 Perl 程序中,我们使用了代码

my $param = shift;
my %local_hash = %$param;

在将 Perl 翻译成 Python 时,最相似的“转移”哈希的方法是什么,还是我不再需要这部分代码?

到目前为止,我在 Python 中有这个

def insert_user(local_hash):
    param = shift
    local_hash = {param}
    user_name = input("Please enter Username: ")
    user_name = user_name.replace('\n', '')

【问题讨论】:

  • 这似乎是XY Problem。这段代码的目的是什么?
  • @TigerhawkT3 此代码的目的是通过从另一个主方法调用此函数将用户添加到哈希中。
  • 添加到散列 - 这是否意味着每个用户都将存储在散列表中,例如 set?哦,最后一行replace 是不必要的,因为input() 在用户按 Enter 时结束(并且不包括尾随换行符)。
  • @TigerhawkT3 我有一个主要的hash = {},当使用该函数调用时,它会以local_hash 的形式放入,以跟踪通过用户输入调用的函数添加、删除和修改的用户。嗯,好吧,所以不需要寻找我们在 perl 中使用的chomp() 的替代品?
  • 那是……教人的一个非常糟糕的习惯。我为你感到抱歉。

标签: python perl hash language-comparisons


【解决方案1】:

您甚至不需要寻找班次的替代方案。

Perl 中的子程序如下:

sub foo {
    my $arg1 = shift;
    my @rest_of_args = @_;
    ...do stuff...
}

在 Python 中,您必须在函数定义语法中定义函数所期望的参数。

def foo (arg1, rest_of_args):
    ...do stuff...

另见:

【讨论】:

  • 非常感谢,所以我只需要放入我要使用的项目,有点像Java?
  • 不,不像 Java。就像 Python 一样。试试official Python tutorial
  • OP 发布的 Perl 代码只接受一个参数(对哈希的引用),然后复制该哈希。那个 Python 代码看起来根本不等价。更改arg1 会影响来电者吗?它不应该。 Perl 代码显式地复制它。
猜你喜欢
  • 1970-01-01
  • 2010-11-07
  • 2011-01-26
  • 2014-02-22
  • 2010-10-31
  • 2011-03-30
  • 1970-01-01
  • 2016-02-04
  • 2022-01-18
相关资源
最近更新 更多