最近在看机器学习的相关内容,然后从GitHub上面下载了一些代码,看到Python里面函数名.变量名一种代码风格很奇怪,于是在此记录一下。
# 绘制决策树
def createTree(newTree, titleName):
# 新建一个figure设置背景颜色为白色
fig = plt.figure(1, facecolor='white')
# 清除figure
fig.clf()
axprops = dict(xticks=[], yticks=[])
# 创建一个1行1列1个figure,并把网格里面的第一个figure的Axes实例返回给ax1作为函数createPlot()
# 的属性,这个属性ax1相当于一个全局变量,可以给plotNode函数使用
createTree.ax1 = plt.subplot(111, frameon=False, **axprops)
# 获取树的叶子节点
plotTree.totalW = float(getNumLeafs(newTree))
# 获取树的深度
plotTree.totalD = float(getTreeDepth(newTree))
# 节点的x轴的偏移量为-1/plotTree.totlaW/2,1为x轴的长度,除以2保证每一个节点的x轴之间的距离为1/plotTree.totlaW*2
plotTree.x0ff = -0.5 / plotTree.totalW
plotTree.y0ff = 1.0
plotTree(newTree, (0.5, 1.0), '')
plt.title(str(titleName), fontsize=14, color='red')
plt.show()
然后参考别人的博客对此有了大致的了解,这样声明的变量相当于C/C++里面的静态变量 ,也就是随着函数的不断调用也只会初始化一次,同时从面向对象的角度来说,函数本身也是对象,于是这样的变量就相当于函数的属性。
参考资料