• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

Python函数陷阱

Python admin 2年前 (2017-06-04) 578次浏览 0个评论 扫描二维码

最近开始回头看下 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


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Python 函数陷阱
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!