0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

盘点Python一些常见的17个错误

lviY_AI_shequ 来源:开源中国 2020-05-12 09:15 次阅读

对于刚入门的 Pythonista 在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了一些常见的 17 个错误,等你写出的代码不怎么出现这些错误的时候,你的 Python 功力就上一个台阶了。换一句话说,当你成为一名合格的 Python 开发者后,你可能 “都写不出” 这类的错误。

1

忘记在 if,for,def,elif,else,class 等声明末尾加:

会导致“SyntaxError :invalid syntax”如下:

ifspam ==42
print('Hello!')

2

使用 = 而不是 ==

也会导致“SyntaxError: invalid syntax”

= 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:

ifspam =42:
print('Hello!')

3

错误的使用缩进量

导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”

记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:

print('Hello!')
print('Howdy!')

或者:

ifspam ==42:
print('Hello!')
print('Howdy!')

4

在 for 循环语句中忘记调用 len()

导致“TypeError: 'list' object cannot be interpreted as an integer”

通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。要记得返回len 值而不是返回这个列表。

该错误发生在如下代码中:

spam = ['cat','dog','mouse']
foriinrange(spam):
print(spam[i])

5

尝试修改 string 的值

导致“TypeError: 'str' object does not support item assignment”

string是一种不可变的数据类型,该错误发生在如下代码中:

spam ='I have a pet cat.'
spam[13] ='r'
print(spam)

而正确做法是:

spam ='I have a pet cat.'
spam = spam[:13] +'r'+ spam[14:]
print(spam) 6

尝试连接非字符串值与字符串

导致 “TypeError: Can't convert 'int' object to str implicitly”

该错误发生在如下代码中:

numEggs =12
print('I have '+ numEggs +' eggs.')

而正确做法是:

numEggs =12
print('I have '+ str(numEggs) +' eggs.')

numEggs =12
print('I have %s eggs.'% (numEggs))

7

在字符串首尾忘记加引号

导致“SyntaxError: EOL while scanning string literal”

该错误发生在如下代码中:

print(Hello!')

print('Hello!)

myName ='Al'
print('My name is '+ myName + . How are you?')

8

变量或者函数名拼写错误

导致“NameError: name 'fooba' is not defined”

该错误发生在如下代码中:

foobar ='Al'
print('My name is '+ fooba)

spam = ruond(4.2)

spam = Round(4.2)

9

方法名拼写错误

导致 “AttributeError: 'str' object has no attribute 'lowerr'”

该错误发生在如下代码中:

spam ='THIS IS IN LOWERCASE.'
spam = spam.lowerr()

10

引用超过 list 最大索引

导致“IndexError: list index out of range”

该错误发生在如下代码中:

spam = ['cat','dog','mouse']
print(spam[6])

11

使用不存在的字典键值

导致“KeyError:‘spam’”

该错误发生在如下代码中:

spam = {'cat':'Zophie','dog':'Basil','mouse':'Whiskers'}
print('The name of my pet zebra is '+ spam['zebra'])

12

尝试使用 Python 关键字作为变量名

导致“SyntaxError:invalid syntax”

Python关键不能用作变量名,该错误发生在如下代码中:

class= 'algebra'

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, yield

13

在一个定义新变量中使用增值操作符

导致“NameError: name 'foobar' is not defined”

不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。

该错误发生在如下代码中:

spam=0
spam +=42
eggs +=42

14

在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)

导致“UnboundLocalError: local variable 'foobar' referenced before assignment”

在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。

这意味着你不能在定义它之前把它当全局变量在函数中使用。

该错误发生在如下代码中:

someVar =42
defmyFunction():
print(someVar)
someVar =100
myFunction()

15

尝试使用 range() 创建整数列表

导致“TypeError: 'range' object does not support item assignment”

有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,而不是实际的 list 值。

该错误发生在如下代码中:

spam= range(10)
spam[4]= -1

正确写法:

spam= list(range(10))
spam[4]= -1

(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)

16

不存在 ++ 或者 -- 自增自减操作符。

导致“SyntaxError: invalid syntax”

如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。

该错误发生在如下代码中:

spam=1
spam++

正确写法:

spam=1
spam +=1

17

忘记为方法的第一个参数添加 self 参数

导致“TypeError: myMethod() takes no arguments (1 given)”

该错误发生在如下代码中:

classFoo():
defmyMethod():
print('Hello!')
a = Foo()
a.myMethod() 看完了之后,相信你如果每天都在撸 Python 的话,上面的错误几乎都很少犯了。 最后说说你有哪些还会常犯的错误呢?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4796

    浏览量

    68707
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84787

原文标题:盘点 Python 高手都写不出来的几个错误

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    EEPROM编程常见错误及解决方案

    EEPROM(电可擦可编程只读存储器)在编程过程中可能会遇到多种错误。以下是一些常见的EEPROM编程错误及其解决方案: 常见
    的头像 发表于 12-16 17:08 815次阅读

    常见的GND连接错误及解决方案

    GND(接地)连接在电子设计和硬件开发中至关重要,错误的GND连接可能导致电路不稳定、信号干扰甚至设备损坏。以下是一些常见的GND连接错误及其解决方案:
    的头像 发表于 11-29 16:02 1465次阅读

    电子电器气密性检测仪使用方法:操作中的常见错误与纠正

    电子电器气密性检测仪是确保产品质量的关键设备,但在使用过程中,操作人员常犯一些错误,导致测试结果不准确或仪器损坏。以下是一些常见的操作错误
    的头像 发表于 11-29 11:20 180次阅读
    电子电器气密性检测仪使用方法:操作中的<b class='flag-5'>常见</b><b class='flag-5'>错误</b>与纠正

    一些常见的动态电路

    无论是模电还是数电,理论知识相对来说还是比较枯燥,各种电路原理理解清楚不算容易,换种生动形象的方式或许会增加一些趣味性,也更容易理解这些知识。下面整理了一些常见的电路,以动态图形的方
    的头像 发表于 11-16 09:26 390次阅读
    <b class='flag-5'>一些</b><b class='flag-5'>常见</b>的动态电路

    aes加密的常见错误及解决方案

    AES(Advanced Encryption Standard,高级加密标准)是种对称加密算法,它使用固定长度的密钥对数据进行加密。在使用AES加密时,可能会遇到一些常见错误。以下
    的头像 发表于 11-14 15:13 1562次阅读

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 326次阅读
    分享<b class='flag-5'>一些</b><b class='flag-5'>常见</b>的电路

    SUMIF函数常见错误及解决方案

    SUMIF函数是Excel中非常实用的函数,用于根据给定条件对数据进行求和。然而,在使用过程中,用户可能会遇到一些常见错误。 1.
    的头像 发表于 11-11 09:10 1521次阅读

    pcb板设计中的常见错误

    印刷电路板(PCB)是电子设备中不可或缺的组成部分,它负责连接电子元件并传输电信号。优秀的PCB设计对于确保电路的性能、可靠性和成本效益至关重要。然而,在PCB设计过程中,工程师可能会犯一些
    的头像 发表于 11-04 13:58 298次阅读

    盘点那些常见音视频接口

    我们熟知的一些常见音视频接口,发展至今在日常使用中已经渐渐少了。但是在工业领域的音视频连接,依然能看到其身影。这些看似消失的接口,它们现在发展成什么样子了?本期我们将做一个大盘点
    的头像 发表于 09-09 14:34 551次阅读

    PCB线路板制造中常见错误有哪些,如何避免?

    站式PCBA智造厂家今天为大家讲讲避免常见pcb设计错误的方法有哪些?避免常见PCB设计错误的方法。避免
    的头像 发表于 06-07 09:15 501次阅读

    常见的CAN中继器应用错误及原因有哪些?

    CAN中继器在应用中可能会遇到一些常见错误,这些错误可能源于多个方面。
    的头像 发表于 05-08 10:16 642次阅读

    介绍一些常见的Modbus IO通信错误代码及其含义

    Modbus IO通信协议中的错误代码通常用于标识通信过程中出现的错误或异常情况。
    的头像 发表于 03-06 09:03 2697次阅读

    串口通信常见错误和故障排除方法

    在进行串口通信时,确实可能会遇到一些常见错误和问题。
    的头像 发表于 03-02 14:19 4060次阅读

    PCB设计工作中常见错误有哪些?

    设计PCB的过程中,很多人都会犯一些常见错误,这些错误如果不能及时纠正,就会极大地影响产品质量。本文将针对 PCB 设计过程中经常会犯的这些错误
    的头像 发表于 02-21 09:32 585次阅读
    PCB设计工作中<b class='flag-5'>常见</b>的<b class='flag-5'>错误</b>有哪些?

    盘点PCB设计中的常见错误

    搞技术,难免存在错误,只有经历过错误,才能更快地成长。PCB设计也样,今天就来盘点下PCB设计中最
    的头像 发表于 01-12 09:53 1426次阅读
    <b class='flag-5'>盘点</b>PCB设计中的<b class='flag-5'>常见</b><b class='flag-5'>错误</b>