你在java中看到的東西叫做positional arguments
,其中參數總是按照一定的順序。但是,Python支持兩種類型的參數:positional arguments and keyword arguments。
關鍵字參數的美妙之處在於,在使用函數時,您不必擔心爲方法(或類構造函數)內使用的所有參數定義值。
您可以只使用identifier
在你的案例max_length
和blank
,並保留其他參數。
如果你看一下Field
類(超CharField的)的__init__
方法,你會發現許多的定義有關鍵字參數:
def __init__(self, verbose_name=None, name=None, primary_key=False,
max_length=None, unique=False, blank=False, null=False,
db_index=False, rel=None, default=NOT_PROVIDED, editable=True,
serialize=True, unique_for_date=None, unique_for_month=None,
unique_for_year=None, choices=None, help_text='', db_column=None,
db_tablespace=None, auto_created=False, validators=[],
error_messages=None):
出的這些,你剛纔定義max_length
和blank
因爲這就是你所要求的。
來源
2016-11-21 06:52:39
AKS
特別是,Python沒有象Java一樣的方法重載,所以你不能擁有不同參數的同一個方法的多個版本。由於'max_length'和'blank'不是前兩個位置參數,所以你必須使用'models.CharField(None,None,False,40,False,True)',必須明確地匹配每個默認值先前的位置參數。你可以看到爲什麼關鍵字參數是首選。 – knbk