python函数默认值设定的陷阱_Python函数陷阱

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值