Python函数陷阱

1,400次阅读
没有评论

最近开始回头看下python学习手册,只想说这本书真的讲的很详细,每次看都会学到新的东西,看来基础还是不是太扎实,需要在磨练,精通python势在必行。

这篇博文也是在看到迭代器和生成器这块附录关于函数的一些介绍

(1)本地变量静态检测

在函数中定义的变量默认是本地变量,其实这个大家应该不会犯这个错误

 

def  test():
       print x 
       x=88

相信大家不会写出上述的代码,虽然在编译的时候会把x解释为test函数的本地变量,但是在代码执行的时候x未赋值就实行print打印操作,出现报错

(2)函数默认和可变对象

先看一段代码

def  test(x=[]):
        x.append(1)
        return x

乍一看这个函数参数x默认时[],然后加上1在返回,看起来没啥毛病,其实你在调用的过程中x一直在被改变

test()
[1]
test()
[1,1]
test()
[1,1,1]

为什么会改变?参数x是函数test调用时都保存了一个对象,且参数时可变参数,可以参考c语言中的静态本地变量,也就是说在函数调用的过程当中,相当于全局变量一样的功能,这个使用起来一定要小心 (3)没有return的函数返回None

admin
版权声明:本站原创文章,由admin2017-06-04发表,共计486字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)