我有一長串可能需要導入的文件。我只需要其中的一個,它們都具有相同的界面。 (選擇支付網關來處理付款)使用變量「插值」創建導入語句
假設我有一個字典表示所有網關文件的名稱。
即
gateways = {
'1' : 'authorize',
'2' : 'paysimple',
'3' : 'braintreepayments',
'4' : 'etc',
}
我知道的鑰匙,根據來自數據庫的信息這本詞典。所以,如果我收到網關值爲1的支付處理請求,我知道它需要由Authorize.net處理。 A 2將由Pay Simple處理。等等
我希望能夠創建一個導入語句,該語句使用我所知道的信息而不是一個可怕的清單elif
語句。
考慮下面的簡單的方法:
# For the purposes of this example assume payment_gateway is defined
# elsewhere and represents the key to the dictionary
gateway_file = gateways.get(payment_gateway)
import_str = "from gateway_interface.%s import process" % gateway_file
gogo(import_str)
凡gogo
是一種能夠導致導入語句,它實際進口。
這樣的事情可能嗎?
你確定你的程序只處理一次付款然後退出嗎?這聽起來不尋常。 – 2012-07-10 00:16:19
我不確定這是多麼的不尋常。如果您進行在線購物並要求結賬,您爲什麼要使用多個網關處理交易? – Rico 2012-07-10 15:42:33
您一次只能使用一個,但通常在線購物將由長期運行的流程處理,該流程在其整個生命週期內處理許多請求。 – 2012-07-10 17:32:47