簡體   English   中英

如果語句后如何將命名參數傳遞給函數?

[英]How to pass named parameters to function after if Statements?

我有一個庫,類似於這個示例代碼:

class PlayBook(object):
    def __init__(self, playbook= None, host_list= None, module_path= None,):
        print "playbook %s host_list %s module_path %s" % (playbook,host_list,module_path)

我需要選擇命名參數,我將傳遞給函數:如果我嘗試這樣做:

a=1
b=2
c=3

PlayBook(
    if a>1:
        module_path=a,
        playbook=b,
    elif b<1:
        playbook=b,
    else:    
        host_list=c,
        playbook="playbook",

)

我有:

    if a>1:
     ^
SyntaxError: invalid syntax

問題:如何選擇命名參數並將其傳遞給函數?

PS:我知道我可以這樣做:

if a>1:
    PlayBook(module_path=a,
        playbook=b,)
elif b<1:
    PlayBook(  playbook=b,)
else:    
    PlayBook( host_list=c,
        playbook="playbook",)

對不起我的英語不好

我將參數收集到dict並在之后解壓縮

if a > 1:
    params = dict(module_path=a, playbook=b)
elif b < 1:
    params = dict(playbook=b)
else:
    params = dict(host_list=c, playbook="playbook")

PlayBook(**params) # ** for keyword arguments

不,你做不到。 將實例化移動到每個子句中。

if a>1:
  PlayBook(
    module_path=a,
    playbook=b,
  )
elif b<1:
  PlayBook(
    playbook=b,
  )
else:    
  PlayBook(
    host_list=c,
    playbook="playbook",
  )
)

暫無
暫無

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

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