0
當使用默認參數時,我在Python 2.7中收到意外的行爲。而不是使用調用者傳入的值,一個參數將被默認值覆蓋。請看下面的功能:Python中的默認參數不一致
def vm_list(domain, username, server, verbose, cluster, datacenter, name,
regex, template_only, detailed_list, vm_status):
print 'inside vm_list vm_stauts is', vm_status
vcenter_request = "get_registered_vms"
vmlist = vcenter_connect(server, user, password, vcenter_request, vm_status)
def vcenter_connect(server, user, password, request,
source_vm=None, target_vm=None,
res_pool=None, num=1, vm_status=None):
print 'inside vcenter_connect vm_stauts is', vm_status
vm_list
獲取與vm_status
傳過來的字符串第一次調用,如「已關閉的」。根據預期,vm_status
的內部函數等於"poweredOff"
,但是當我將該值傳遞給vcenter_connect
時,它將被默認參數None
覆蓋。我在vcenter_connect
中使用其他默認參數,但它們按預期工作,也就是說,它們只在使用默認值時纔會傳入任何內容。
運行相關部分以測試字符串值給我:
inside vm_list vm_stauts is poweredOff
inside vcenter_connect vm_stauts is None
我在做什麼錯?
謝謝!這就是訣竅。這對我來說是一個學習的步驟,因爲我不太習慣關鍵字參數。 –