python用函数名作变量名是什么用法??求解释
python">def createPlot(): fig = plt.figure(1, facecolor='white')
fig.clf() # 清除图上数据
createPlot.ax1 = plt.subplot(111, frameon=False) ##这个变量为什么是全局的? *.*这种命名是怎么回事
plotNode('decision Node', (0.5, 0.1), (0.1, 0.5), decisionNode)
plotNode('leaf Node', (0.8, 0.1), (0.3, 0.8), leafNode)
plt.show()
在学习《机器学习实战》这本书,看到里面有个变量是createPlot.ax1,似乎把函数当做类来用,感觉有点奇怪,求高手指点一下,或有没有相关的资料?(不知道这种该怎么查了……
回答:
其实这个问题很简单
动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。
那么动态创建有一个必然的条件就是需要对自身进行进一步的抽象处理,来声明当前创建的对象。
所以说为什么python里面一切都是对象呢?就是上面这个原因。所有的抽象处理都是基于元类处理--type
。
python中一切的对象都可以用type()
解析,也有以下的一些func obj.__name__, obj.__dict__
。
那么也就不难理解为什么createPlot.ax1
这样的写法。无非就是声明了对象的一个属性或变量而已。
createPlot.__dict__
就可以看到当前对象包含属性或变量{'ax1': 1}
回答:
万物皆对象
回答:
类似iteration生成器,或者装饰器,函数本身就是一个变量,只不过他有__call__()方法
def wrapper(func): print("wrapping")
def inner():
return func()
return inner
@wrapper
print_some():
return
这样,用装饰器装饰一个函数,运行之前都会输出一个wrapping
回答:
在python中万物皆对象,一个int可以作为变量赋值,函数也可以。
函数名指向一个函数,可以通过赋值将其改变指向到另一个函数。
以上是 python用函数名作变量名是什么用法??求解释 的全部内容, 来源链接: utcz.com/a/162259.html