如何按照PEP8规则缩小尺寸?

时间:2017-06-18 18:51:35

标签: python python-3.x naming-conventions pep8

我必须添加一个用于创建3D纹理的函数。 我在整个模块中使用蜗牛盒。

我的选择是:

def texture_3d(...):
    pass

def texture_3D(...):
    pass

def texture3D(...):
    pass

该功能的名称应该是什么?

对意见感兴趣:哪一个看起来更好。我需要一些其他模块的参考资料才能看到最佳实践。

请提及至少1个具有类似功能的模块。

4 个答案:

答案 0 :(得分:4)

PEP 8 states小写,函数名称的单词之间有下划线分隔。现在,因为如果3d / 3D是一个真实的单词似乎是固执己见,你会在名字texture_3dtexture3d之间产生冲突(d正在小写)。

查看一些numpy函数,例如lagval3dlaggrid3dhermegrid3d名称texture3d看起来是个不错的选择。

the matplotlib docs中搜索相似的名称会在<name>3d<name>_3d之间产生混合结果。

简而言之,根据两个主要方案,这两个名字似乎都被接受了。归结为两者之间的个人选择。

答案 1 :(得分:4)

我们可能会问这匹马,而不仅仅依赖于人类的意见? (如'从马的口中取出'。)换句话说,使用pylint

我修改了你的代码,以便生成更少的消息。

''' some information here'''

def texture_3d(parameters):
    ''' a docstring'''
    return parameters

def texture_3D(parameters):
    ''' a docstring'''
    return parameters

def texture3D(parameters):
    ''' a docstring'''
    return parameters

pylint的结果是:

************* Module temp
C:  7, 0: Invalid function name "texture_3D" (invalid-name)
C: 11, 0: Invalid function name "texture3D" (invalid-name)

------------------------------------------------------------------
Your code has been rated at 6.67/10 (previous run: 5.00/10, +1.67)

只留下选项texture_3d

答案 2 :(得分:3)

来自PEP-8

  

方法名称和实例变量

     

使用功能命名规则:   小写,单词由下划线分隔,以便改进   可读性。

这告诉我,你的第一个选择是三者中最顺从的。

答案 3 :(得分:3)

简短回答 texture_3d

PEP-8说about function names

  

功能名称应为小写单词分隔   强调以提高可读性。

     

只允许在已经存在的情况下使用mixedCase   主流风格(例如threading.py),向后保留   兼容性。

自&#34;纹理&#34;和&#34; 3d&#34;是两个单独的词,最好在它们之间加上下划线。此外,函数名称应为小写,因此3D 不允许