我是靠谱客的博主 开心小蜜蜂,最近开发中收集的这篇文章主要介绍Python 变量作用域问题 函数名.变量名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

刚接触Python,主要想利用它做数据处理。我用的是Python2.7.5,win7系统

最近在看《机器学习实战》,第三章决策树中有一段代码,摘抄如下,对于用颜色标注部分,刚开始没看懂什么意思。

def plot_tree(mytree, parent_pt, node_txt):

     num_leafs = get_num_leafs(mytree)

    depth = get_tree_depth(mytree)

     first_str = mytree.keys()[0]

    cntr_pt = (plot_tree.xOff + (1.0 + float(num_leafs))/2.0/plot_tree.totalW,

    plot_tree.yOff)

    plot_mid_text(cntr_pt, parent_pt, node_txt)

    plot_node(first_str, cntr_pt, parent_pt, decision_node)

    second_dict = mytree[first_str]

    plot_tree.yOff = plot_tree.yOff - 1.0/plot_tree.totalD

    for key in second_dict.keys():

        if type(second_dict[key]).__name__ == 'dict':

            plot_tree(second_dict[key], cntr_pt, str(key))

        else:

            plot_tree.xOff = plot_tree.xOff + 1.0/plot_tree.totalW

            plot_node(second_dict[key], (plot_tree.xOff, plot_tree.yOff),

            cntr_pt, leaf_node)

            plot_mid_text((plot_tree.xOff,plot_tree.yOff), cntr_pt, str(key))

    plot_tree.yOff = plot_tree.yOff + 1.0/plot_tree.totalD

#绘图,相当于主函数

def create_plot(intree):

    fig = plt.figure(1, facecolor='white')

    fig.clf()

    axprops = dict(xticks=[], yticks=[])

    create_plot.ax1 = plt.subplot(111,frameon=False, **axprops)

    plot_tree.totalW = float(get_num_leafs(intree))

    plot_tree.totalD = float(get_tree_depth(intree))

    plot_tree.xOff = -0.5/plot_tree.totalW

    plot_tree.yOff = 1.0

    plot_tree(intree, (0.5,1.0), '')

    plt.show()

最后想了想,在主函数中,以这样的方式(函数名.变量名)声明并赋值,如上例中plot_tree.xOff。而在子函数plot_tree()中,此变量plot_tree.xOff可直接使用,即使再有一个子函数并在主函数中调用,该变量也可直接使用。但是python中变量命名方式为字母,下划线,数字。而plot_tree.xOff并不能算是一个变量。搞不懂!

或者以如下这种方式也可以使用。

def t1():

    t.var = 3

def t2():

    var = t.var +3

    print 't2---  var = ',var

运行:

t1()

t2()

输出结果为:t2---   var =  6

但是,在上述代码中,t.var中的t,我是随意写的,并不是一个函数名。而且这两个函数t1(),t2()并没有相互调用关系。搞不懂!

之前,看到一位前辈的博客介绍python变量作用域,能改变python变量作用域的代码段有def,class,lamda。似乎不适用此种情况。

刚接触Python,具体什么原因,也不太清楚。

望高手解答!




最后

以上就是开心小蜜蜂为你收集整理的Python 变量作用域问题 函数名.变量名的全部内容,希望文章能够帮你解决Python 变量作用域问题 函数名.变量名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部