2015-10-07 84 views
1

我是一名学习Python和Perl的学生。 在我们的Perl程序,我们翻译的Perl到Python这将是最相似的方式,以“转移”哈希时使用的代码Perl到Python移位翻译

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

还是我不再需要这部分代码?

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

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

这似乎是一个[XY问题](http://meta.stackexchange.com/questions/66377/what -is-的-XY-问题)。这段代码的目的是什么? – TigerhawkT3

+0

@ TigerhawkT3此代码的目的是通过从另一个主要方法调用此函数来将用户添加到散列。 – Robert

+0

添加到散列 - 这是否意味着每个用户都将存储在散列表中,就像一个'set'?噢,'replace'的最后一行不是必须的,因为当用户按下Enter(并且不包括尾随换行符)时,input()结束。 – TigerhawkT3

回答

3

你甚至都不需要寻找转移的替代品。

在Perl子程序如下记载:

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

在Python中,你必须定义函数在函数定义语法期待的参数。

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

另见:

+0

非常感谢,所以我只需要放入我将要使用的项目,有点像Java? – Robert

+2

不,不像Java。像Python一样。试试[官方Python教程](https://docs.python.org/3.4/tutorial/index.html)。 – TigerhawkT3

+0

由OP发布的Perl代码只需要一个参数(对散列的引用),然后它会生成该散列的副本。该Python代码看起来并不相同。更改'arg1'会影响呼叫者吗?它不应该。 Perl代码显式复制它。 – ikegami