我习惯用这种方式命名Python参数:
my_argument='foo'
Run Code Online (Sandbox Code Playgroud)
如果我这样做有什么好处:
my_argument_='foo"
Run Code Online (Sandbox Code Playgroud)
如PEP008推荐的那样?
尾随下划线必须有充分的理由,那么它是什么?
Ign*_*ams 16
正是它在PEP中提供的内容:它允许您使用原本可能是Python关键字的东西.
as_
with_
for_
in_
Run Code Online (Sandbox Code Playgroud)
PEP8也不会建议使用此命名惯例,除了原本与关键字相冲突的名字.my_argument显然不会发生冲突,所以没有理由使用下划线而PEP8不建议您这样做.
这种约定没有任何优点,但在不同的项目中可能有特殊含义。例如在 scikit-learn 中,这意味着带有下划线的变量在fit()调用后可以具有值。
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.coef_
AttributeError: 'LinearRegression' object has no attribute 'coef_'
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当您尝试获取对象coef_的属性时lr,您将得到一个AttributeError,因为它尚未创建,因为fit尚未调用。
lr = LinearRegression()
lr.fit(X, y)
lr.coef_
Run Code Online (Sandbox Code Playgroud)
但这一次,它将返回每列的系数,没有任何错误。这是使用此约定的方式之一,它在不同的项目中可能意味着不同的事情。
| 归档时间: |
|
| 查看次数: |
3814 次 |
| 最近记录: |