2017-06-28 68 views
0

我是Python腳本中的新成員。我想在我的代碼寫作中有點專業。基本上,我有一個功能的腳本,我想添加新的功能。Python - 如何根據參數運行代碼段

我的代碼看起來有點像:

const declaration 
CONST1 = .... 
CONST2 = .... 
CONST3 = .... 
CONST4 = .... 
CONST5 = .... 
CONST6 = .... 
CONST7 = .... 


function declaration 
def f1: 
    .... 

def f2: 
    .... 
def f3: 
    .... 
def f5: 
    .... 
def f7: 
    .... 
def f8: 
    .... 
def f0: 
    .... 

first part 
logic 
logic 
logic 
logic 
logic 
logic 
logic 
    logic 


second part 
....... 
....... 

我想,這樣當腳本某些參數,可以在第一部分運行或第二取決於PARAMS運行到這兒添加新的功能。

我知道我可以使用if ... else來做到這一點,但想知道是否有更專業的方式來做到這一點。以便代碼更易於維護並且易於添加。你能給我一些建議嗎?

+0

把它們變成功能和呼叫正確的取決於你的參數 – BoilingFire

+1

你問的是如何做'控制流程'這是一個非常廣泛的問題,取決於喲你的數據/應用程序的大小,你可以使用不同的方法加載的可能性:https://en.wikipedia.org/wiki/Control_flow – user1767754

回答

1

在這種情況下,你應該使用dictionary

例如:

CONST1 = 'CONST1' 
CONST2 = 'CONST2' 

def f1(): 
    return 'Hello from f1 function' 

def f2(): 
    return "Hello from f2 function" 

my_data = { 
    'CONST1': f1, 
    'CONST2': f2, 
} 

def run(key): 
    # If there is no key, just return message 
    # Or use try/catch 
    if key not in my_data.keys(): 
     return 'Oops, I can\'t find the key' 

    # Here we get a value via key, and call function via parentheses 
    return my_data[key]() 

print(run('CONST1')) 
0

您可以使用Python Dictionary的get方法。

def f(x): 
    return { 
     'a': 1, 
     'b': 2, 
    }.get(x, 9) # 9 is default if x not found 

options = { 
    0 : First, 
    1 : Second, 
} 
options[num]()