0

我正在阅读朋友的代码,但我不明白为什么有时他会使用以下内容:

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

其他时候他使用:

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

db.String(6)和 和有什么不一样db.String(length=6)

4

2 回答 2

2

一个使用位置参数,另一个使用关键字参数。

如果String()对象定义有length作为第一个参数,这两个版本的含义相同,因为 Python 将从左到右填充参数,即使这些参数是关键字参数。

据推测,您正在查看使用 SQLAlchemy 的代码;该String()类型恰好具有该签名;length是第一个参数:

class sqlalchemy.types.String(length=None, collation=None, convert_unicode=False, unicode_error=None, _warn_on_bytestring=False)
于 2013-07-01T08:33:53.100 回答
0

如果这就是它的样子——字符串类型列的 SQLAlchemy 定义——那么唯一的区别就是显式性。有人说这是不必要的冗长,但它很好地提醒了您在学习、大量重构或拥有一长串参数时参数的含义。

您可以在此处阅读有关关键字参数的更多信息

http://docs.python.org/2/tutorial/controlflow.html#keyword-arguments

http://docs.python-guide.org/en/latest/writing/style.html#function-arguments

于 2013-07-01T08:58:37.387 回答