python新手常犯错误

本文参考自伯乐在线:http://blog.jobbole.com/42706/

1.用可变值作为默认值

记住一点,在Python里,函数的默认值在函数定义的时候实例化的,而不是在调用的时候。

比如下面这个函数,numbers参数初始化为空列表,那么每次调用的时候都会将9加入到列表后面:

def foo(numbers=[]):
    numbers.append(9)
    print numbers

结果:

>>> foo() # first time, like before
[9]
>>> foo() # second time
[9, 9]
>>> foo() # third time...
[9, 9, 9]
>>> foo() # WHAT IS THIS BLACK MAGIC?!
[9, 9, 9, 9]

再看一个更加明显的例子:

def print_now(now=time.time()):
    print now

这个函数输出当前时间戳,这个时间戳不是每次调用时的时间戳,而是该函数定义时被解释器解释时候的时间戳!

>>> print_now()
1373121487.91
>>> print_now()
1373121487.91
>>> print_now()
1373121487.91

2作用域

尽量不要用全局变量。这可能会带来诸多麻烦。

bar = 42
def foo():
    print bar

上面这段代码的输出结果是42,因为函数内部的bar是全局变量。再看下面这段代码:

>>> bar = 42
... def foo():
...     bar = 0
... foo()
... print bar
42

foo中的bar其实是一个局部变量,你并没有改变全局变量的值。再看下面这段代码:

bar = 42
def foo():
    print bar
    bar = 0

你本来想打印全局变量bar之后再创建一个局部变量bar,但事实上,报错了!

提示局部变量bar在没有赋值前就被引用了。这是因为python是解释性语言,当解释器执行到def foo():函数声明时,会静态的从这个函数作用域获取信息。当解释到bar=0这一行时会把bar加入局部变量列表(是解释到这一行,不是执行到这一行,所以此时局部变量bar并没有被赋值),但当执行到print bar时,局部变量bar没有赋值,所以就报错了。

如果想让程序按照原先的想法执行,那么应该要加上global关键字声明。

事实上,这些错误我们有时候很清楚,但就是写的时候容易忽略这一点。尤其是在和其他语言混合编程的时候很容易混淆。

时间: 2025-01-28 01:48:29

python新手常犯错误的相关文章

网站优化新手常犯的错误

摘要: 当一个人第一次成为个人站长,即创建一个以互联网独立平台为牟利手段的网站,他一定会接触到并去学习网站优化,即SEO.这就好比一个练武的人和人打架,和对手打得难解难分的时 当一个人第一次成为个人站长,即创建一个以互联网独立平台为牟利手段的网站,他一定会接触到并去学习网站优化,即SEO.这就好比一个练武的人和人打架,和对手打得难解难分的时候,对方忽然使出了暗器,自己因此惊慌败下阵来.这个暗器就好比网站优化,当你努力做好自己的网站,出色的内容,优良的架构,良好的用户体验,而对手也和你相差无几的时

php 程序常犯错误总结

php 程序常犯错误总结 1.不转意html entities 一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意. echo $_GET['usename'] ; 这个例子有可能输出: <script>/*更改admin密码的脚本或设置cookie的脚本*/</script> 这是一个明显的安全隐患,除非你保证你的用户都正确的输入. 如何修复 : 我们需要将"< ",">","a

购买空间的一些心得 应避免新手常犯的错误

我在购买空间的时候一些心得.(避免新手买空间常犯的错误) 现在有很多空间商,不管是国内的还是国外的.服务也有好有坏,相信很多站长都在初期有过被服务商欺骗的经历.笔者就曾经在刚刚建站的时候连续N天泡在搜索引擎里面,为的就是寻找一个适合自己的空间.在这里总结一下购买虚拟空间的经验,希望大家不要跟我走进同样的误区. 1:一分钱一分货,切记不要贪便宜. 在网上经常能看到一些价格便宜,容量又大,ISS.流量等等等总之都不限制,总之看了感觉性价比相当合适.但是冷静下来想想,要是性价比这么合适,空间商如何盈利

购买主机的一些心得 应避免新手常犯的错误

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我在购买主机的时候一些心得.(避免新手买主机常犯的错误) 现在有很多空间商,不管是国内的还是国外的.服务也有好有坏,相信很多站长都在初期有过被服务商欺骗的经历.笔者就曾经在刚刚建站的时候连续N天泡在搜索引擎里面,为的就是寻找一个适合自己的主机.在这里总结一下购买虚拟主机的经验,希望大家不要跟我走进同样的误区. 1:一分钱一分货,切记不要贪便宜

重视用户体验:摒弃网页视觉设计常犯错误

文章描述:细数10大网页视觉设计错误 用户体验需重视. 导语:在网络日益发达的今天,大家肯定都见过不少网站,但是大多数网站的设计都十分糟糕.这些设计糟糕的网站不仅在布局上问题多多,而且很不重视用户体验,致使网站流失大量用户.印尼专业设计师Albertus Adrianto近日在设计网站1stwebdesigner上撰文阐述了在网页视觉设计上常出现的10大错误.希望设计者们引以为诫:网站其实也是一个产品,也有它的用户体验,你意识到了这一点,你的网站才会推动你的宣传. 相信大家上网都看到过很多网站,

Java新手常犯的几种错误

错误 失败是成功之母,这句话用在编程高手身上是再合适不过的了.学习编程没有什么捷径可以走, 在不断的学习和编码的过程中,逐渐的积累经验,从开始的模仿者变成最后的创作者.和学习其它的 编程语言一样,Java新手在开始编码的时候也会出现很多很多的错误,而且有的错误可能也是不断的 出现.当出现这些错误的时候,我们就要仔细的看看错误提示,找出问题所在,避免以后不再发生同样 的错误.在这个过程当中我们的经验和水平也在不断的提升. Java错误,主要包括两方面,一种是语法错误,另一种是逻辑错误. 语法错误,

CSS网页制作技巧:DIV+CSS网页布局常犯错误汇总

文章简介:随着CSS网页布局越来越普及,国内大部分网站已经采用CSS网页布局的制作方法.在应用DIV+CSS编码时很容易犯一些错误,这里列举一些常见的错误,帮助新手朋友更好的学习与进步. 随着CSS网页布局越来越普及,国内大部分网站已经采用CSS网页布局的制作方法.在应用DIV+CSS编码时很容易犯一些错误,这里列举一些常见的错误,帮助新手朋友更好的学习与进步. 一.检查HTML元素是否有拼写错误 是否忘记结束标记 即使是老手也经常会弄错div的嵌套关系.可以用dreamweaver的验证功能检

DIV+CSS网页布局及网站设计常犯错误

1.导航菜单使用图片.FLASH 导航菜单使用图片.FLASH当然比纯文本来得好看一些,但是搜索引擎并不认识你的图片和FLASH.如果你非要使用漂亮的图片来做导航的话,可以使用背景替换的方法(我会在下次谈到这一个方法的):如果你要使用FLASH做导航,那我就没你办法了.建议做一个导航菜单链接的xml文提交到搜索引擎. 2.不恰当地使用图片 为了网页美观,经常会到处贴满图片,这样做是不正确的,与内容无关的图片能少就少吧.我们可以把这些图片做成容器的背景. 3.内容里特殊字体的运用 我承认楷体很漂亮

总结竞品分析报告中常犯错误

在几年的产品工作过程中,写过一些竞品分析报告,总结了几个曾经犯过的错误,下面就一起和大家分享一下,希望能引起大家注意,避免同样的错误. 一.没有结论的功能点介绍 最常见的竞品分析方法就是对市场上的领先产品进行一次浏览,逐个写出竞品的功能点及流程,不管使用了整齐的表格或者详实的文字描述,又或者是使用了漂亮的图形和截图,没有结论的统计是没有意义的,分析就一定要有结果. 竞品分析的目的就是为自身产品的战略.节奏.功能点.交互视觉等多方面提供参考,指导自身工作实践.可以遵循以下的链条:竞品在做什么->竞