通常我会做一些小功能。例如save_csv(),show_plot(),然后是更大的函数,它们可以执行大量的操作并可选择调用小函数。什么是一个合适的命名惯例,以区分例如save_csv()
作为函数,save_csv
作为标志?
在C等中,使用匈牙利表示法并使用'b'作为'boolean'为变量添加前缀并不罕见。但我不认为这是非常pythonic。而且我已经尝试了'do_'前缀的标志,它有点工作,但也是丑陋和混乱。我想知道是否有任何约定?
我在pep8中看不到任何东西。 https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles
e.g。
def foo(..., b_resample, b_save_csv, b_save_plot, b_show_plot, b_compare):
# do some stuff
if b_resample:
# do more stuff
resample(...)
if b_show_plot:
# do more stuff
show_plot(...)
if b_compare:
# do more stuff
compare(...)
# do more stuff
if b_save_csv:
# do more stuff
save_csv(...)
更新: 考虑到该功能的论点是面向公众的,我希望它们“体面”,这就是为什么我不喜欢匈牙利表示法或在这种情况下引导下划线。然而,我正在考虑转向下面,公众面临的args是人类可读的,而在内部他们有领先的下划线。这是常见做法吗?
def foo(..., **kwargs):
_resample = kwargs.get('resample', False)
_show_plot = kwargs.get('show_plot', False)
_save_plot = kwargs.get('save_plot', True)
_compare = kwargs.get('compare', True)
_save_csv = kwargs.get('save_csv', True)
# do some stuff
if _resample:
# do more stuff
resample(...)
if _show_plot:
# do more stuff
show_plot(...)
if _compare:
# do more stuff
compare(...)
# do more stuff
if _save_csv:
# do more stuff
save_csv(...)
答案 0 :(得分:1)
直接从PEP8:
函数名称应为小写,并根据需要用下划线分隔,以提高可读性。
变量名称遵循与函数名称相同的约定。
所以我不认为那里有一个" pythonic"约定将函数与共享相同名称的变量区分开来的约定。我认为这更像是个人选择,因此,我个人使用名为has_save_csv
或is_save_csv
的变量(正如Ramazan Polat已经提到的那样)。
更新是的,当您计划在内部使用变量时,最好让变量以前导下划线开头。你可以阅读更多关于这个优秀的article的内容,它简明扼要地总结了下划线的含义。
答案 1 :(得分:0)
您可以使用SaveCSV
作为方法名称,使用save_csv
作为属性名称,但我不推荐使用。因为通常的方法是做'对象的某种东西,而属性只是对象的状态。
在您的情况下,我建议您使用save_csv()
作为方法名称,使用is_save_csv
作为属性名称。
答案 2 :(得分:0)
理想情况下,布尔标识符应以形容词结尾,因此我会使用类似"想要&#34 ;;的后缀。例如 plot_wanted 。