2013-07-01 144 views
0

我讀一個朋友的代碼,我不爲什麼有時理解(長度= 6),他使用以下:差異蟒蛇

aFieldInATable = db.Column(db.String(6), nullable=False) 

等倍他使用:

anotherField = db.Column(db.String(length=255), nullable=False) 

是什麼db.String(6)db.String(length=6)之間的區別?

回答

2

一個使用位置參數,另一個使用關鍵字參數。

如果String()對象定義有length作爲第一個參數,這兩個版本意味着同樣的事情爲Python將填補參數,由左到右,即使這些PARAMATERS是關鍵字參數。

大概,你正在使用SQLAlchemy查看代碼; String() type恰好具有該簽名; length是第一個參數:

class sqlalchemy.types.String(length=None, collation=None, convert_unicode=False, unicode_error=None, _warn_on_bytestring=False) 
+0

因此,如果它們是相同的,你能想到的任何理由爲什麼他會在兩者之間交替? – RockJake28

+0

@ RockJake28:糟糕的短期記憶? –

+0

@ RockJake28:真的,沒有理由相互使用。也許關鍵字使用版本可以被看作是自我記錄。 –