2015-10-07 108 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