我正在考虑将未在函数体中修改的那些Python函数参数拼写为ALL_UPPERCASE,向这样的API的用户发出信号,告知传递的值不会被修改(如果所有内容都按照所宣传的那样进行,无论如何)。我不知道这会碰到的Python惯例或语言机制;有没有?这样的命名惯例是可取的,还是只是不必要的奇怪?
E.g:
def foo(bar, BAZ):
return bar.some_method(BAZ.some_property)
答案 0 :(得分:3)
UPPERCASE用于全局常量,而不是函数参数。请参阅此处的Python Style Guide。
在Python函数签名中,您希望所有参数不被修改。如果一个参数需要一个可变对象并且它将被就地更改,那么这就是异常,应该记录如下:
def foo(bar, baz):
"""Frobs the bar in baz
Alters the baz list in-place, and returns None.
"""
将UPPERCASE用于未被修改的函数参数将因此a)混淆(因为它与样式指南冲突)和b)冗余,因为大多数代码都不会改变可变对象,除非记录为明确这样做