簡體   English   中英

python:驗證函數參數

[英]python: validating function parameters

我需要確保所有命名的參數都傳遞給一個方法(我不想要任何默認值)。 以下是執行它的最佳方法嗎?

class X:
  def func(self, **kwargs):
    if set(kwargs.keys() != ('arg1', 'arg2', 'arg3'):
      raise ArgException(kwargs)

對於Python 2.x,Hugh的答案(即只使用命名的位置參數)是你最好的選擇。

對於Python 3.x中,你也有需要使用的關鍵字參數(而不是僅僅允許它),如下的選項:

class X(object):
    def func(self, *, arg1, arg2, arg3):
        pass
class X(object):
    def func(self, **kwargs):
        required = set(['arg1','arg2','arg3'])
        if not set(kwargs.keys()).issuperset(required):
            raise ArgException(kwargs)

雖然你可以讓翻譯處理它:

class X(object):
    def func(self, arg1, arg2, arg3):
        pass

你想允許其他論點嗎? 如果不:

class X(object):
    def func(self, arg1, arg2, arg3):
        pass

如是:

class X(object):
    def func(self, arg1, arg2, arg3, **kwargs):
        pass

這適用於所有版本的Python。

暫無
暫無

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

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