page contents

新手必看,17个常见的Python运行时错误!

初入门的 Pythoner 在运行代码时免不了会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧,当遇到一些运行时错误时能够很快的定位问题原题。下面整理了常见的 17 个错误,希望能够帮助到大家。

attachments-2024-11-SStKFE1K672581990f03c.png初入门的 Pythoner 在运行代码时免不了会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧,当遇到一些运行时错误时能够很快的定位问题原题。下面整理了常见的 17 个错误,希望能够帮助到大家。

1、忘记在 if,for,def,elif,else,class 等声明末尾加 :会导致SyntaxError :invalid syntax如下:

if spam == 42

  print('Hello!')

2、使用= 而不是 ==也会导致SyntaxError: invalid syntax

= 是赋值操作符,而 == 是等于比较操作

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

if spam = 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!')

或者:

if spam == 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']

for i in range(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

def myFunction():

    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)

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

class Foo():

    def myMethod():

        print('Hello!')

a = Foo()

a.myMethod()

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-11-02 09:34
  • 阅读 ( 32 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章