机器学习实战中的代码
def plotNode(nodeTxt, centerPt, parentPt, nodeType):
createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction',
xytext=centerPt, textcoords='axes fraction',
va="center", ha="center", bbox=nodeType, arrowprops=arrow_args )
def createPlot():
fig = plt.figure(1, facecolor='white')
fig.clf()
createPlot.ax1 = plt.subplot(111, frameon=False) #ticks for demo puropses
plotNode('a decision node', (0.5, 0.1), (0.1, 0.5), decisionNode)
plotNode('a leaf node', (0.8, 0.1), (0.3, 0.8), leafNode)
plt.show()
求问:def的函数内 直接用“函数名.变量名”直接变成全局变量了?如:createPlot.ax1? 是这个意思吗?还是其他意思
因为上面的代码def createPlot():中定义createPlot.ax1
在def plotNode(nodeTxt, centerPt, parentPt, nodeType):中调用也用了createPlot.ax1
而不是createPlot.createPlot.ax1
为啥可以这样?
谢谢啊
不是这样的,是模块名,加变量名,或者是类名加成员变量的名
比如
class People:实例化后,可以用
p = People()再比如一个模块
people.py
里面的代码有
name = 'wz'
你在另一个脚本上导入它
import people但是函数里的就是不可以这样用,可以百度"自强学堂 在线教程"学习python
追问people.name 可以这样被调用我明白,我不清楚如果在people内部就取名people.name,那别人调用他岂不是要people.people.name?
追答如果people.py这个模块内部有一个class是 People
这要看你如何调用了
import people
people.People.name # 一般不这么用
p = people.People() # p是People的一个实例
p.name
from people import People
p = People() # p是People的一个实例
p.name