簡體   English   中英

具有不同參數的Python函數指針

[英]Python function pointer with different arguments

我定義了三個功能。

def evaluate1(a, b):
    pass
def evaluate2(a, b):
    pass
def evaluate3(a, b, c):
    pass

我想做的是使用一個指針來記錄我將根據test輸入使用哪個評估函數。 邏輯如下所示:

def test(a, b, c, d):
    # let evaluate_function records which evaluate function I will use
    if c > 1:
        evaluate_function = evaluate3 # not sure
    else:
       if d:
           evaluate_function = evaluate1
       else:
           evaluate_function = evaluate2

    # execute the evaluate function
    evaluate_function(a, b, ?)

但是,由於evaluate3evaluate1evaluate3具有不同的參數。 我應該怎么做? 謝謝!

您已經想到了使用“函數指針”選擇函數的好主意。 但是,由於您知道當時選擇的是哪個函數,因此也可以綁定參數:

def test(a, b, c, d):
    # let evaluate_function records which evaluate function I will use
    if c > 1:
        evaluate_function = evaluate3 # not sure
        params = a,b,d
    else:
       if d:
           evaluate_function = evaluate1
           params = a,b
       else:
           evaluate_function = evaluate2
           params = a,c

    # execute the evaluate function
    evaluate_function(*params)

我將留給您正確選擇params

為什么不直接調用評估函數,而不是直接將其分配給函數呢? 使其更具可讀性

def evaluate1(a, b):
    print('evaluate1')

def evaluate2(a, b):
    print('evaluate2')

def evaluate3(a, b, c):
    print('evaluate3')

def test(a, b, c=None, d=None):
    # let evaluate_function records which evaluate function I will use
    if c and c > 1:
        evaluate3(a, b, c)
    else:
       if d:
           evaluate1(a, b)
       else:
           evaluate2(a, c)

test(1,2,c=0.1,d=1)
#evaluate1
test(1,2)
#evaluate2
test(1,2,3)
#evaluate3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM