python常见错误
Python编程实践中的常见问题及解决方法

Python编程实践中的常见问题及解决方法Python作为目前最流行的编程语言之一,被广泛应用于各个领域。
但是在实际编程中,我们可能会遇到各种各样的问题。
本文将介绍一些Python编程实践中常见的问题并提供解决方法。
1. Python版本问题在编写Python程序时,我们需要确定使用的Python版本。
当前最新版本为Python 3.x系列,但是在某些情况下,我们可能需要使用Python 2.x系列。
解决方法:在编程前确定使用的Python版本,并在代码中进行相关设置。
可以使用sys模块确定当前Python版本,并根据其版本进行相应的设置,并建议尽可能使用新版Python。
2. 模块导入错误Python中的模块使用非常方便,只需使用“import”语句即可导入。
但是,在实际使用中可能会遇到模块导入错误的问题。
解决方法:首先需要检查是否已正确安装相关模块。
可以使用pip进行安装,或者在Python官网上下载相关模块进行手动安装。
其次,也可能是Python环境变量没有设置正确,需要检查是否将模块路径添加到PYTHONPATH中。
3. 语法错误语法错误是所有编程语言中最常见的错误之一。
在Python编程实践中也是如此。
解决方法:首先需要仔细检查代码中是否存在语法错误,如拼写错误、大小写错误等。
其次,可以使用Python的语法检查工具进行检查。
例如,在命令行中输入“python -m py_compile<filename>.py”即可实现对指定代码文件的语法检查。
4. 编码问题在Python编程中,中文和其他非ASCII字符经常会出现编码问题。
如果未正确处理,会导致代码错误或运行时异常。
解决方法:在代码文件中加入注释头部,声明文件编码格式。
例如:# -*- coding: UTF-8 -*-。
同时,建议在使用中尽可能使用Python 3.x版本,因为其对中文和其他非ASCII字符的支持更好。
初学者常犯的Python错误及解决方法

初学者常犯的Python错误及解决方法Python作为一门易于学习且广泛应用的编程语言,吸引了众多初学者的兴趣。
然而,对于初学者来说,使用Python时常常会遇到一些常见的错误。
本文将介绍一些初学者常犯的Python错误,并提供相应的解决方法,帮助读者更好地理解和解决这些问题。
1. 语法错误语法错误是最常见的错误类型之一。
初学者在编写Python代码时常常忽略或错误使用关键字、括号、引号等。
这些错误可以通过仔细检查和理解Python的语法规则来解决。
此外,初学者还可以使用Python IDE(集成开发环境)或代码编辑器来提醒或自动修正这些错误。
2. 代码缩进错误Python是通过缩进来表示代码块的结构,而不是使用大括号。
初学者经常忽略或错误使用缩进,导致代码执行出错。
解决这个问题的方法是在编写代码时保持一致的缩进方式,通常是使用4个空格。
另外,初学者可以使用IDE或编辑器的自动缩进功能来帮助正确缩进代码。
3. 变量命名错误初学者往往在给变量命名时容易犯错。
一些常见的错误包括使用Python保留关键字作为变量名、使用特殊字符或数字作为变量名的起始字符等。
解决这个问题的方法是选择具有描述性并且易于理解的变量名,并且遵循Python的命名规则。
4. 类型错误类型错误是由于在代码中使用了不兼容的数据类型而导致的。
例如,将整数和字符串相加等。
解决这个问题的方法是确保在进行操作之前,变量的数据类型是兼容的。
初学者可以使用Python的内置函数(如str()、int()等)来改变变量的数据类型。
5. 语义错误语义错误是指程序没有按预期工作而没有报错。
这类错误通常是由于逻辑错误或算法问题造成的。
解决这个问题的方法是仔细检查代码逻辑,确认是否满足预期的行为。
初学者可以使用调试工具(如print语句、断点调试等)来帮助定位和解决问题。
6. 不正确的缩进准则Python通过缩进来表示代码块的层次结构,因此正确的缩进是非常重要的。
Python编程学习中常见的问题有哪些

Python编程学习中常见的问题有哪些Python 作为一门热门的编程语言,因其简洁易懂、功能强大等优点,吸引了众多学习者。
然而,在学习 Python 编程的过程中,大家往往会遇到各种各样的问题。
接下来,我们就来探讨一下 Python 编程学习中常见的一些问题。
首先,语法错误是初学者最容易碰到的问题之一。
Python 有其特定的语法规则,比如缩进的使用、标点符号的正确书写等。
一个小小的疏忽都可能导致程序无法正常运行。
例如,忘记在 if 语句后面加上冒号,或者在定义函数时没有正确地使用括号,都会引发语法错误。
对于初学者来说,要养成仔细检查代码的习惯,同时利用好编程工具提供的语法检查功能,及时发现并纠正这些错误。
其次,逻辑错误也是让人头疼的问题。
有时候代码能够顺利运行,但是结果却不是我们期望的。
这往往是因为逻辑上出现了漏洞。
比如在一个循环中,没有正确地设置循环条件,导致循环次数过多或者过少;或者在处理条件判断时,没有考虑到所有可能的情况。
解决逻辑错误需要我们仔细思考代码的执行流程,通过打印中间结果或者使用调试工具来逐步排查问题。
变量和数据类型的理解与使用不当也是常见的问题。
Python 中有多种数据类型,如整数、浮点数、字符串、列表、字典等。
如果不清楚不同数据类型的特点和适用场景,就可能会出现错误。
比如,试图对一个字符串进行数学运算,或者将一个列表当作字典来使用。
此外,变量的作用域和生命周期如果没有理解清楚,也可能导致程序出现意外的结果。
函数的使用也是一个容易出错的地方。
函数的参数传递、返回值的处理等都需要正确理解。
有时候,传递的参数类型不正确,或者没有正确地处理函数的返回值,都会影响程序的运行。
而且,对于一些复杂的函数,如果没有清晰的函数设计和注释,也会让代码变得难以理解和维护。
面向对象编程的概念对于初学者来说可能具有一定的难度。
理解类、对象、属性和方法之间的关系,以及如何正确地设计和使用类,是学习 Python 面向对象编程的关键。
Python编程实践中常见问题有哪些

Python编程实践中常见问题有哪些Python 作为一种广泛应用的编程语言,在编程实践中,开发者可能会遇到各种各样的问题。
以下是一些常见的问题以及相应的解决方法。
语法错误是初学者最容易碰到的问题之一。
比如,忘记缩进、括号不匹配、标点符号使用错误等。
例如,在 ifelse 语句中,如果没有正确缩进代码块,程序就会报错。
解决这类问题的关键在于仔细检查代码,并熟悉 Python 的语法规则。
逻辑错误相对较难发现和解决。
这可能是由于算法设计不当或者对问题的理解不准确导致的。
比如说,在一个循环中,没有正确设置终止条件,导致程序陷入死循环。
又或者在计算数值时,使用了错误的运算符或者计算顺序。
要解决逻辑错误,需要仔细分析程序的执行流程,通过打印中间结果或者使用调试工具来找出错误所在。
变量命名不规范也是一个常见的问题。
如果变量名含义不清晰或者不符合命名规范,会使代码难以理解和维护。
比如使用单个字母作为变量名,或者使用过于模糊的名称。
为了避免这个问题,应该采用有意义且具有描述性的变量名,遵循 Python 的命名约定,如使用小写字母加下划线的方式。
内存管理问题可能在处理大量数据时出现。
如果不断创建对象而不及时释放,可能会导致内存泄漏。
此外,对于大型数据结构,如果没有合理使用数据类型或者算法,可能会消耗过多的内存。
解决内存管理问题需要了解Python 的内存机制,合理使用生成器、迭代器等工具,以及及时释放不再使用的资源。
模块导入错误也是经常碰到的。
可能会出现找不到模块、模块名称拼写错误或者模块路径设置不正确等情况。
要解决这个问题,需要确保模块安装正确,名称拼写无误,并且模块所在的路径在 Python 的搜索路径中。
异常处理不当也是一个需要注意的问题。
如果没有对可能出现的异常进行适当的捕获和处理,程序可能会在遇到异常时崩溃。
应该在可能出现异常的代码段中添加 tryexcept 语句,对常见的异常进行处理,并提供适当的错误提示信息。
python编程中常见错误

python编程中常见错误python中常见错误最后,我想谈谈使⽤更多python函数(数据类型、函数、模块、类等)时可能遇到的问题。
由于篇幅有限,我们试图将其简化,特别是⼀些⾼级概念。
有关更多详细信息,请阅读学习python、第⼆版的“技巧”和“gotchas”章节。
打开⽂件的调⽤不使⽤模块搜索路径在python中调⽤open()访问外部⽂件时,python不使⽤模块搜索路径来定位⽬标⽂件。
它将使⽤您提供的绝对路径,或者假定⽂件位于当前⼯作⽬录中。
模块搜索路径仅⽤于模块加载。
不同的类型对应不同的⽅法。
列表⽅法不能⽤于字符串,反之亦然。
通常,⽅法调⽤与数据类型相关,但内部函数通常在许多类型上可⽤。
例如,list的reverse⽅法只对list有⽤,但是len函数对任何有长度的对象都有效。
⽆法直接更改不可变数据类型请记住,不能直接更改不可变对象(例如元组、字符串):t=1、2、3t[2]=4误差⽤切⽚、连接等构造⼀个新的对象,并根据需要为其分配原始变量的值。
因为python会⾃动回收⽆⽤的内存,所以并不像看起来那么浪费:t=t[:2]+(4,)没问题:t变成(1,2,4)使⽤简单for循环⽽不是while或range当您从左到右遍历有序对象的所有元素时,使⽤简单的for循环(例如,seq:中的x)⽐使⽤基于while或range的计数循环更容易编写,并且通常运⾏得更快。
除⾮需要,否则请尽量避免在for循环中使⽤range:让python为您解决标记问题。
在下⾯的⽰例中,这三个循环都很好,但第⼀个循环通常更好;在python中,简单性是最重要的。
S=伐⽊⼯⼈对于c in s:print c是最简单的对于范围内的i(len(s):打印s[i]太多I=0太多当i<len(s):打印s[i];i+=1不要试图从更改对象的函数中获取结果。
直接更改操作,如⽅法列表。
追加()并列出。
sort()更改对象,但不返回更改的对象(它们不返回任何对象);正确的⽅法是直接调⽤它们,⽽不是分配结果。
python configuration error

python configuration error1. Python 路径错误:如果 Python 执行时找不到正确的 Python 解释器路径,会导致配置错误。
确保在操作系统的环境变量中设置了正确的 Python 路径。
你可以在命令行中输入 `python --version` 来确认 Python 是否正确安装并可以执行。
2. Python 包管理工具(pip)配置错误:如果你使用 pip 来安装 Python 包,可能会遇到配置错误。
确保你的 pip 配置正确,包括正确的镜像源和认证信息。
你可以通过运行`pip config list` 命令来查看当前的 pip 配置。
3. virtualenv 或 Conda 环境问题:如果你使用 virtualenv 或 Conda 创建了虚拟环境,可能会遇到环境配置错误。
确保你正确激活了所需的虚拟环境,并检查环境中的 Python 版本和依赖项是否正确安装。
4. Python 配置文件错误:某些应用程序可能使用Python 的配置文件,如`~/.pythonrc` 或 `~/.config/python/`。
如果这些文件存在错误或损坏,可能会导致配置问题。
你可以检查这些文件是否存在,并确保它们包含正确的配置。
5. 权限问题:某些 Python 配置需要适当的文件权限。
确保你对相关的配置文件和目录具有足够的读写权限。
6. 冲突的库或模块:如果你安装了多个版本的 Python 库或模块,可能会导致冲突和配置错误。
确保你只安装和使用所需的库和模块,并避免多个版本的冲突。
如果你遇到特定的配置错误消息或错误代码,可以在网上搜索相关的解决方法或向社区寻求帮助。
提供更具体的错误信息将有助于更准确地诊断和解决问题。
希望这些信息对你解决 Python 配置错误有所帮助!如果问题仍然存在,请提供更多细节,我将尽力提供进一步的帮助。
17个新手常见Python运行时错误

当初学Python时,想要弄懂Python的错误信息的含义可能有点复杂。
这里列出了常见的的一些让你程序crash的运行时错误。
1)忘记在if,elif,else,for,while,class,def声明末尾添加:(导致“SyntaxError:invalid syntax”)该错误将发生在类似如下代码中:2)使用=而不是==(导致“SyntaxError:invalid syntax”)=是赋值操作符而==是等于比较操作。
该错误发生在如下代码中:3)错误的使用缩进量。
(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”)记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。
该错误发生在如下代码中:4)在for循环语句中忘记调用len()(导致“TypeError:'list'object cannot be interpreted as an integer”)通常你想要通过索引来迭代一个list或者string的元素,这需要调用range()函数。
要记得返回len值而不是返回这个列表。
该错误发生在如下代码中:5)尝试修改string 的值(导致“TypeError:'str'object does not support item assignment”)string 是一种不可变的数据类型,该错误发生在如下代码中:而你实际想要这样做:6)尝试连接非字符串值与字符串(导致“TypeError:Can't convert 'int'object to str implicitly ”)该错误发生在如下代码中:而你实际想要这样做:7)在字符串首尾忘记加引号(导致“SyntaxError:EOL while scanning string literal ”)该错误发生在如下代码中:1234print (Hello!')或者:8)变量或者函数名拼写错误(导致“NameError:name 'fooba'is not defined ”)该错误发生在如下代码中:9)方法名拼写错误(导致“AttributeError:'str'object has no attribute 'lowerr '”)该错误发生在如下代码中:10)引用超过list 最大索引(导致“IndexError:listindex out of range ”)该错误发生在如下代码中:11)使用不存在的字典键值(导致“KeyError :‘spam’”)该错误发生在如下代码中:12)尝试使用Python 关键字作为变量名(导致“SyntaxError :invalid syntax ”)Python 关键不能用作变量名,该错误发生在如下代码中:Python3的关键字有:and,as,assert,break,class,continue,def,del,elif,else,except,False,finally,for,from,global,if,import,in,is,lambda,None,nonlocal,not,or,pass,raise,return,True,try,while,with,yield13)在一个定义新变量中使用增值操作符(导致“NameError:name 'foobar'is not defined ”)不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam +=1等于spam =spam +1,这意味着spam 需要指定一个有效的初始值。
python遇到问题及解决方案

python遇到问题及解决方案
《Python遇到问题及解决方案》
在使用Python编程语言的过程中,我们难免会遇到一些问题。
这些问题可能会让我们感到挫败,但事实上,它们通常并不是不能解决的。
在这篇文章中,我们将讨论一些常见的Python
问题以及它们的解决方案。
1. 语法错误
当我们在编写Python代码时,很容易犯一些语法错误,例如
拼写错误、缩进错误等。
这些错误通常会导致程序无法正常运行。
要解决这个问题,我们需要仔细审查代码,并且可以使用Python的调试工具来帮助我们找到并修复这些错误。
2. 模块导入错误
有时候我们在导入Python模块时会遇到一些问题,例如模块
名拼写错误、模块不在当前的搜索路径中等。
为了解决这个问题,我们可以检查模块名拼写是否正确,并且可以通过修改Python的搜索路径来确保模块被正确导入。
3. 运行时错误
在程序运行过程中,有时候会出现一些意外的错误,例如除以零、访问不存在的索引等。
为了解决这个问题,我们可以使用Python的异常处理机制来捕获这些错误,并且可以添加一些
验证代码来避免这些错误的发生。
4. 性能问题
有时候我们的Python程序会运行的很慢,这可能是因为我们的代码效率不高。
为了解决这个问题,我们可以使用一些优化技巧,例如使用更高效的算法、避免不必要的计算等。
总的来说,遇到问题是不可避免的,但我们并不需要因此感到沮丧。
在编程的过程中,解决问题本身就是一种乐趣,而且通过解决问题我们也会变得更加成熟和有经验。
希望上面提到的解决方案能够帮助你克服在使用Python时遇到的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在这篇文章中,我将总结新老Python程序员常犯的一些错误,以帮助你们在自己的工作避免犯同样或类似错误。
首先我要说明一下的是,这些都是来源于第一手的经验。
我以讲授Python的知识为生。
在过去的7年里,我已经给上千名学生讲授上百堂Python的课程,同时看着这些学生们犯同样的错。
也就是说,这些是我看着Python初学者活生生犯的错,千百次的错。
事实上,这些错误实在是太普遍了以至于我敢保证你刚开始学的时候是一定会犯的。
“那么是什么呢?”你会问,“你也会在Python里犯那么多错么?”是的。
Python可能是最简单、最灵活的语言之一,但它终究还是一门编程语言。
它仍然有语法,数据类型,以及巫师蒂姆居住的黑暗角落。
(典故出自《蒙蒂派森与圣杯》中的魔法师蒂姆,他主角们指点在洞穴的墙壁上记录的圣杯位置,作者在此处的意思是Python语言里容易犯错的地方。
另,Python语言得名于作者Guido van Rossum特别喜欢的《蒙蒂派森飞行马戏团(Monty Python’s Flying Circus)》——译者注)好事情是多亏了Python那干净的设计,一旦你学会了Python,你就能自动的避开很多陷阱。
Python在其各组件之间有着最小的互动,这能有效的减少bug。
它也拥有十分简单的语法,这意味着在一开始你就有更小的概率犯错。
当你实在是犯了错的时候,Python的即时错误检测和报告能帮你迅速的恢复。
但用Python编程也不是个自动完成的活儿,很多事还是要早做准备。
那么废话不多说了,让我们直切正题。
在接下来的三节里我们将这些错误分为语用、代码,以及编程三个大类。
如果你想读到更多的Python的常见错误以及如何避免它们,那么在O’Reilly系列丛书的《Learning Python》里有详细的解读。
(译注:Learning Python 已经是第五版了)语用错误让我们从基础开始,从那些刚学习编程的人钻研语法之前碰到的事情开始。
如果你已经编过一些程了,那么以下这些可能看起来十分的简单;如果你曾经尝试过教新手们怎么编程,它们可能就不这么简单了。
在交互提示符中输入Python代码在>>>交互提示符中你只能输入Python代码,而不是系统命令。
时常有人在这个提示符下输入emacs,ls,或者edit之类的命令,这些可不是Python代码。
在Python代码中确实有办法来调用系统命令(例如os.system和os.popen),但可不是像直接输入命令这么直接。
如果你想要在交互提示符中启动一个Python 文件,请用import file,而不是系统命令python file.py。
Print语句(仅仅)是在文件中需要因为交互解释器会自动的讲表达式的结果输出,所以你不需要交互的键入完整的print语句。
这是个很棒的功能,但是记住在代码文件里,通常你只有用print 语句才能看得到输出。
小心Windows里的自动扩展名如果你在Windows里使用记事本来编辑代码文件的话,当你保持的时候小心选择“所有文件”(All Files)这个类型,并且明确的给你的文件加一个.py的后缀。
不然的话记事本会给你的文件加一个.txt的扩展名,使得在某些启动方法中没法跑这个程序。
更糟糕的是,像Word或者是写字板一类的文字处理软件还会默认的加上一些格式字符,而这些字符Python语法是不认的。
所以记得,在Windows下总是选“所有文件”(All Files),并保存为纯文本,或者使用更加“编程友好”的文本编辑工具,比如IDLE。
在IDLE中,记得在保存时手动加上.py的扩展名。
在Windows下点击图标的问题在Windows下,你能靠点击Python文件来启动一个Python程序,但这有时会有问题。
首先,程序的输出窗口在程序结束的瞬间也就消失了,要让它不消失,你可以在文件最后加一条raw_input()的调用。
另外,记住如果有错的话,输出窗口也就立即消失了。
要看到你的错误信息的话,用别的方法来调用你的程序:比如从系统命令行启动,通过提示符下用import语句,或者IDLE菜单里的选项,等等。
Import只在第一次有效你可以在交互提示符中通过import一个文件来运行它,但是这只会在一个会话中起一次作用;接下来的import仅仅是返回这个已经加载的模块。
要想强制Python重新加载一个文件的代码,请调用函数reload(module)来达到这个目的。
注意对reload请使用括号,而import不要使用括号。
空白行(仅仅)在交互提示符中有作用在模块文件中空白行和注释统统会被忽略掉,但是在交互提示符中键入代码时,空白行表示一个复合语句的结束。
换句话说,空白行告诉交互提示符你完成了一个复合语句;在你真正完成之前不要键入回车。
事实上当你要开始一个新的语句时,你需要键入一个空行来结束当前的语句——交互提示符一次只运行一条语句。
代码错误一旦你开始认真写Python代码了,接下来了一堆陷阱就更加危险了——这些都是一些跨语言特性的基本代码错误,并常常困扰不细心的程序员。
别忘了冒号这是新手程序员最容易犯的一个错误:别忘了在复合语句的起始语句(if,while,for等语句的第一行)结束的地方加上一个冒号“:”。
也许你刚开始会忘掉这个,但是到了很快这就会成为一个下意识的习惯。
课堂里75%的学生当天就可以记住这个。
初始化变量在Python里,一个表达式中的名字在它被赋值之前是没法使用的。
这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,””,[],?)。
记住把计数器初始化为0,列表初始化为[],以此类推。
从第一列开始确保把顶层的,未嵌套的代码放在最左边第一列开始。
这包括在模块文件中未嵌套的代码,以及在交互提示符中未嵌套的代码。
Python使用缩进的办法来区分嵌套的代码段,因此在你代码左边的空格意味着嵌套的代码块。
除了缩进以外,空格通常是被忽略掉的。
缩进一致在同一个代码块中避免讲tab和空格混用来缩进,除非你知道运行你的代码的系统是怎么处理tab的。
否则的话,在你的编辑器里看起来是tab的缩进也许Python看起来就会被视作是一些空格。
保险起见,在每个代码块中全都是用tab 或者全都是用空格来缩进;用多少由你决定。
在函数调用时使用括号无论一个函数是否需要参数,你必须要加一对括号来调用它。
即,使用function(),而不是function。
Python的函数简单来说是具有特殊功能(调用)的对象,而调用是用括号来触发的。
像所有的对象一样,他们也可以被赋值给变量,并且间接的使用他们:x=function:x()。
在Python的培训中,这样的错误常常在文件的操作中出现。
通常会看到新手用file.close来关闭一个问题,而不是用file.close()。
因为在Python中引用一个函数而不调用它是合法的,因此不使用括号的操作(file.close)无声的成功了,但是并没有关闭这个文件!在Import时不要使用表达式或者路径在系统的命令行里使用文件夹路径或者文件的扩展名,但不要在import语句中使用。
即,使用import mod,而不是import mod.py,或者import dir/mod.py。
在实际情况中,这大概是初学者常犯的第二大错误了。
因为模块会有除了.py以为的其他的后缀(例如,.pyc),强制写上某个后缀不仅是不合语法的,也没有什么意义。
和系统有关的目录路径的格式是从你的模块搜索路径的设置里来的,而不是import 语句。
你可以在文件名里使用点来指向包的子目录(例如,import dir1.dir2.mod ),但是最左边的目录必须得通过模块搜索路径能够找到,并且没有在import 中没有其他路径格式。
不正确的语句import mod.py 被Python 认为是要记在一个包,它先加载一个模块mod ,然后试图通过在一个叫做mod 的目录里去找到叫做py 的模块,最后可能什么也找不到而报出一系列费解的错误信息。
不要在Python 中写C 代码以下是给不熟悉Python 的C 程序员的一些备忘贴士:∙在if 和while 中条件测试时,不用输入括号(例如,if (X==1):)。
如果你喜欢的话,加上括号也无妨,只是在这里是完全多余的。
∙ 不要用分号来结束你的语句。
从技术上讲这在Python 里是合法的,但是这毫无用处,除非你要把很多语句放在同一行里(例如,x=1; y=2; z=3)。
∙ 不要在while 循环的条件测试中嵌入赋值语句(例如,while((x=next() != NULL))。
在Python 中,需要表达式的地方不能出现语句,并且赋值语句不是一个表达式。
编程错误下面终于要讲到当你用到更多的Python 的功能(数据类型,函数,模块,类等等)时可能碰到的问题了。
由于篇幅有限,这里尽量精简,尤其是对一些高级的概念。
要想了解更多的细节,敬请阅读Learning Python, 2nd Edition 的“小贴士”以及“Gotchas”章节。
打开文件的调用不使用模块搜索路径当你在Python 中调用open()来访问一个外部的文件时,Python 不会使用模块搜索路径来定位这个目标文件。
它会使用你提供的绝对路径,或者假定这个文件是在当前工作目录中。
模块搜索路径仅仅为模块加载服务的。
不同的类型对应的方法也不同列表的方法是不能用在字符串上的,反之亦然。
通常情况下,方法的调用是和数据类型有关的,但是内部函数通常在很多类型上都可以使用。
举个例子来说,列表的reverse 方法仅仅对列表有用,但是len 函数对任何具有长度的对象都适用 不能直接改变不可变数据类型记住你没法直接的改变一个不可变的对象(例如,元组,字符串):1 2 T = (1, 2, 3)T[2] = 4 # 错误用切片,联接等构建一个新的对象,并根据需求将原来变量的值赋给它。
因为Python 会自动回收没有用的内存,因此这没有看起来那么浪费:1 T = T[:2] + (4,) # 没问题了: T 变成了 (1, 2, 4)使用简单的for 循环而不是while 或者range当你要从左到右遍历一个有序的对象的所有元素时,用简单的for 循环(例如,for x in seq:)相比于基于while-或者range-的计数循环而言会更容易写,通常运行起来也更快。
除非你一定需要,尽量避免在一个for 循环里使用range :让Python 来替你解决标号的问题。
在下面的例子中三个循环结构都没有问题,但是第一个通常来说更好;在Python 里,简单至上。
12 3 4 5 6 78S = "lumberjack" for c in S: print c # 最简单 for i in range(len(S)): print S[i] # 太多了 i = 0 # 太多了 while i < len(S): print S[i]; i += 1 不要试图从那些会改变对象的函数得到结果诸如像方法list.append()和list.sort()一类的直接改变操作会改变一个对象,但不会将它们改变的对象返回出来(它们会返回None );正确的做法是直接调用它们而不要将结果赋值。