2017-06-13 53 views
-3

是否有標準的方法來切換參數傳遞到函數的順序?在一個函數中切換兩個參數的順序

例如,

def verse_maker(sent1, sent2): 
    do stuff 

verse_maker(arg1, arg2) 

開關等參數的立場,即:

verse_maker(arg2, arg1) 

編輯:我的意思是說,無需手動再次調用該函數。我希望函數能夠在這兩個不同的配置中運行兩次參數。

+2

是的。交換函數中參數的順序。我在這裏錯過了什麼嗎? – scotty3785

+0

我不認爲這裏有比你在這裏寫的方式更簡單的方法嗎?..我不希望你的程序正常工作,但是你想達到什麼目的? – Sayse

+0

不,沒有標準的方法來調用交換順序的函數兩次。 –

回答

3

你應該能夠做到:

def verse_maker(sent1, sent2): 
    do stuff 

verse_maker(sent2=arg2, sent1=arg1) 

但我不明白爲什麼你不只是換周圍的ARGS?它更短

編輯:看到你的編輯,我不完全確定你在說什麼,你希望代碼運行兩次而不需要調用兩次?我猜你可以在代碼中放置一個循環,這樣它會運行2次,並在第一次循環結束時交換參數?

編輯2:所以這是什麼,我相信你正在尋找

def verse_maker(sent1, sent2): 
    for i in range(2): 
    do stuff 
    sent2, sent1 = sent1, sent2 

這將在循環結束掉的變量,並重新用交換變量

+0

一個小問題,爲什麼不把循環放在調用函數而不是被調用的函數中。這樣被調用的函數仍然沒有副作用。 – SRC

+0

我把它放在函數內部,因爲它似乎像OP想要在其他點調用該函數,並且每次都在參數的兩個順序上執行函數。當然你是對的,如果你只想這樣做一次,你會把for循環放在函數調用本身。但是OP表示他們不想多次調用這個函數,所以我在函數 – dhdavvie

+1

中使用循環。這正是我的觀點。如果我們將循環從被調用函數中取出並放入調用函數中,那麼調用函數一次還是兩次都無關緊要。我們可以做任何我們想做的事情,但作爲一個「原子單位」的函數將始終按預期工作。你怎麼看? – SRC

1

當我運行代碼在評論中提到,恕我直言,解決方案提供了工作,但它具有將循環放入函數本身的副作用。我想建議,而不是

def verse_maker(sent1, sent2): 
    do stuff 

for i in range(0,2): 
    verse_maker(arg1, arg2) 
    arg1, arg2 = arg2, arg1 

我只是把循環出功能,並把它放在我們調用它的地方。這樣,我們稱這個函數有多少次無關緊要。它將始終產生所需的結果。

相關問題