Python语言初学者容易踏入的一些坑
1、不注意缩进
Python语言对缩进要求很严格,能够帮助编程者避免很多逻辑错误。建议初学者一律按照4个空格来缩进,并注意观察语句的归属层次。
下面就是一个典型的缩进不一致错误,有的缩进8个空格,有的缩进4个空格:
2、调用函数忘记加括号
Python语言中函数名称代表这个函数对象,要调用函数则必须在名称后面加括号,初学者尤其容易忘记那些不带参数的函数调用。
# 海归作图中done函数是结束绘制
# 由于没有参数,很容易被写成这样
turtle.done
# 下面这个才是正确的
turtle.done()
3、用系统内置函数作为变量名
比如下面的一些语句,会使你失去系统内置的功能:
# set是内置集合类型,这么赋值
# 你就再也无法用set([1,2,3,4])来创建集合了
set = [1,2,3,4]
# print是内置的打印输出函数,这么赋值
# 你就再也无法打印输出了
print = "Hello"
4、将py文件命名为内置模块的名称
比如,为了计算一个公式的值,把源代码文件命名为math.py,内容如下:
import math
print(math.sqrt(2)*2)
运行的结果会是这样:
Traceback (most recent call last):
File "/Users/chenbin/Documents/homework/math.py", line 1, in <module>
import math
File "/Users/chenbin/Documents/homework/math.py", line 2, in <module>
print(math.sqrt(2)*2)
AttributeError: module 'math' has no attribute 'sqrt'
因为一旦用math来命名py文件,那么import math将会是import自己。将来在进行海龟作图的时候,很多同学也会犯类似错误,把py文件叫做“turtle.py”。
5、以为input函数是万能的
初学者经常会以为input函数可以随心所欲得到想要的那种类型数值,特别是整数,比如:
n = input("请输入年龄:")
print("明年你就", n + 1, "岁了!")
结果出错,因为python3中的input函数返回的是最素的……字符串,必须要套一层int()才能得到整数。
6、可变类型的连续赋初值
初学者觉得a=b=c=1这样赋初值特别cool,然后:
# 初始化了3个空列表,但这其实是幻觉
# 因为它们仨指向了同一个可变类型的列表容器对象
a=b=c=[]
# 给a添加了一个元素
a.append(123)
# 其实a,b,c指向的是同一个列表
#结果都是[123]
print(a,b,c)
记住,只有不可变类型的对象可以这么赋初值,或者你确实需要几个指向同一个可变对象的变量(这几乎不会出现)。
第6个坑里的“只有不可变类型的对象可以这么赋初值”不能理解是什么意思
不可变类型对象不会因为从一个变量进行修改,而引起其它变量的值也改变了。
都是经典错误~~总结的很棒! 全犯过~~~