字母(_p)前面的下划线在python中是什么意思

时间:2017-03-30 21:50:41

标签: python

我遇到了一个功能,但不太了解它。我不确定这是一个约定还是有意义。 _p是什么,_p在哪里进入函数。如果你能在这里给我一些关于for循环的解释,我将不胜感激。

    def contraction_mapping(S, p, MF, params, beta=0.75, threshold=1e-6, suppr_output=False):
        ''' 
Initialization of the state-transition matrices: 
        describe the state-transition probabilities if the maintenance cost is incurred, 
        and regenerate the state to 0 if the replacement cost is incurred.
        '''
        ST_mat = np.zeros((S, S))
        p = np.array(p) 
        for i in range(S):
            for j, _p in enumerate(p):  
                if i + j < S-1:
                    ST_mat[i+j][i] = _p

                elif i + j == S-1:
                    ST_mat[S-1][i] = p[j:].sum()
                else:
                    pass

        R_mat = np.vstack((np.ones((1, S)),np.zeros((S-1, S))))        

1 个答案:

答案 0 :(得分:2)

有关许多python样式约定的详细信息,请参阅PEP8。特别是,您可以在此处找到单个前导下划线的描述:

https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles

  

_single_leading_underscore:弱“内部使用”指标。例如。来自M import *不会导入名称以。开头的对象   下划线。

在上面的循环中,这有点滥用,因为他们只使用p来避免与现有名称_p发生冲突。这些变量名称显然不是很明显。 p是枚举提供的数组项,而p也是整个数组(本地覆盖传入的原始pass参数)。

作为旁注,循环本身有点笨拙,可以简化和优化(主要是使用更好的范围代替{{1}},并避免重复重新计算总和)。