在《机器学习实战》中,作者使用了一种[函数名].[变量名]
的格式声明并引用变量。
示例如下:
def createPlot(inTree):fig = plt.figure(1, facecolor='white')fig.clf()axprops = dict(xticks=[], yticks=[])createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) #这一行plotTree.totalW = float(getNumLeafs(inTree)) #这一行plotTree.totalD = float(getTreeDepth(inTree)) #这一行plotTree.xOff = -0.5/plotTree.totalW; plotTree.yOff = 1.0 #还有这一行plotTree(inTree, (0.5, 1.0), '')plt.show()
那么使用这种格式声明的变量有何特殊之处呢?
查阅相关资料后,原来,这样声明的变量相当于C/C++
里的静态变量
从Python
语言本身的角度而言:
Functions are first-class objects
即:函数本身也是对象,也可以像其他对象一样拥有属性;我们可以把这样声明的变量看作该函数的属性。
参考文献:
what-does-a-function-followed-by-dot-then-variable-func-var-means-in-python?
Python语法基础——关于全局变量与局部变量