經過一番閱讀後,我發現自己正在努力用兩種不同的方法將參數列表傳遞給函數。我讀了一些跡象。這就是我想通了,至今:傳遞和處理函數參數的最佳方法
實際代碼:
文件caller.py:
import worker
worker.version_check(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_get(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_send(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
文件:worker.py:
def version_check(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_get(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_send(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
現在我有:
file caller.py:
import worker
args = (env, family, host, password, prefix, proxyServer,
proxyUser, proxyPass, option, jokerVar
)
worker.version_check(*args)
worker.version_get(*args)
worker.version_send(*args)
文件:worker.py:
def version_check(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_get((*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_send(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
使用老方法(實際的代碼),我相信這是更「友好」來稱呼在只有一條線的功能(你可以在worker.py看到)。但是,使用新方法,我認爲代碼變得更加廣泛,因爲對於每個函數,我必須定義所有相同的變量。但這是最佳做法嗎?我仍然在慢速學習Python,所以,對於代碼中的任何錯誤感到抱歉。
而且一件重要的事情是,大部分變量都是從數據庫中檢索出來的,所以它們並不穩定。
一般來說,當你結束了與許多參數的函數,你需要考慮你的設計更多一些。傳遞一個對象比那麼多參數要好? –
@MartijnPieters有可能給我一個例子嗎?同時我會嘗試在s.o上找到它。和python文檔。 –
這組參數代表什麼?可以命名嗎?如果是這樣,使它成爲一個名爲tuple或自定義類來保存該信息,那麼你有一個對象來傳遞,而不是x個單獨的參數。 –