python常见报错类型_学习Python函数时常见的报错类型

本文总结了学习Python函数过程中常见的五种报错类型,包括语法错误、无效字符错误、缩进错误、非默认参数错误及变量名错误,并对每种错误进行了详细解释。
部署运行你感兴趣的模型镜像

问题:

学习Python函数时常见的报错类型有哪些?

答案

下面我们总结一些我们学习函数时常见的报错类型:# 缺少英文括号后的英文冒号

def func1()

print('Hello World')

# 报错:SyntaxError: bad input on line 1

# (语法错误:第 1 行输入有问题)

1,SyntaxError 的意思是“语法错误”,而冒号后面的是语法错误的细节。这个例子中的具体细节为 bad input,一般来说就是你输入的代码不符合格式,可能多打或少打了一些必要的字母或者标点。最后的 on line xxx 意思是在哪一行发现的错误,这也有助于你直接去定位。# 输入了中文标点(本例中输入了中文冒号)

def func2():

print('Hello World')

#报错:SyntaxError: invalid character in identifier

#(语法错误:识别不了不支持的字符)

2,这里的语法错误细节是 invalid character,也就是 Python 语法中不支持的字符。除字符串和注释外,Python 语法里支持的字符是不支持汉字和中文标点的。

这里的例子中输入了中文的冒号,Python 当然识别不了啦。所以一定要注意,见到 invalid character 就要看看是不是把括号、冒号、引号等输入错啦,平时写代码时,我们也要预先把输入法调好。# y = 2 缩进错误

def func3():

x = 1

y = 2

# 报错:IndentationError: unindent does not match any outer indentation level

# (缩进错误:(y = 2 这一行)缩进变小了,但是其它地方匹配不到和他一样的缩进层级)

3,IndentationError 指“缩进错误”。“indentation” 和“indent” 表示缩进,“unindent” 表示“减少或取消缩进”。我们在第五关中说过,Python 非常注重缩进的层次,一旦确定了缩进层次,后面就要统一。一开始用两个或者四个空格作为一个缩进,后面也需要一直保持一样的标准,否则机器就会识别错乱。

比如这个例子中,第 2 行 x = 1 用两个空格表示一个缩进,但第 3 行 y = 2 中变成了一个空格缩进,发生了报错语句所说的“unindent”,但在其它代码行中,找不到同样是 1 个空格表示缩进的地方,所以报错了。# 默认参数应该放在位置参数后

def func4(x, y = 1, z):

print(x, y, z)

# 报错:SyntaxError: non-default argument follows default argument

# (语法错误:非默认参数被放到了默认参数后面)

4,这里的语法错误细节中的关键词是“argument”,意思是“参数”。“default argument” 表示“默认参数”。当你看到“arguement”,就要去检查函数定义过程中,参数有没有出错啦。# 全局作用域不能访问局部变量

def func5():

x = 1print(x)

# 报错:NameError: name 'x' is not defined

# (变量名错误:变量名 'x' 没有被定义)

5,这个例子我们在第六关中说过了,局部变量被函数这堵“围墙”隔得严严实实。在函数外,不用 global 语句,是无法访问函数内的局部变量的。

通过以上的代码,你有没有发现,虽然这些代码写的时候有错,但我们也能读懂写代码的人要干什么,这就是人脑在综合处理中比电脑强大得多的证明。

所以,还是一句话,报错的主要原因是机器太笨不会变通,我们要迁就它。我们可以阅读报错的具体信息,回到出错代码中对症下药、及时修改,让函数正常运行,达成程序员日常生活中不可或缺的 debug 成就。

同时我们也要留心报错的内容,将报错信息复制下来,在网上搜索并记住报错的具体所指,下次遇到类似的问题也可以从容应对。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 常见Python错误及其解决方案 #### 一、语法错误 语法错误是最常见的错误之一,通常由拼写错误、缺少冒号、括号不匹配等原因引起。解决这类错误的方法是仔细检查代码,并利用Python解释器提供的详细错误消息来定位问题所在[^1]。 例如,在定义函数忘记加冒号将会引发`SyntaxError: invalid syntax`: ```python def my_function() pass ``` 正确形式应为: ```python def my_function(): pass ``` #### 二、缩进错误(IndentationError) 在Python中,正确的缩进对于表示代码块至关重要。如果缩进不当,则会产生`IndentationError`。此类型的错误往往发生在if语句、for循环或其他控制结构内部的代码未按照预期进行适当缩进的情况下[^3]。 错误示例: ```python def example(): print('hello') ``` 修正后的版本如下所示: ```python def example(): print('hello') # 正确地进行了四个空格的缩进 ``` #### 三、名称错误(NameError) 当尝试访问尚未定义或不在当前作用域内的变量名会发生`NameError`。这可能是由于打字失误或者是试图引用之前从未赋过值的名字造成的。 错误实例: ```python pront("Hello") # 'pront' 应该是 'print' ``` 修复方式很简单——更正拼写的单词即可: ```python print("Hello") ``` #### 四、类型错误(TypeError) 这种错误表明操作数的数据类型不合适;比如给定两个整数相除却期望得到字符串的结果就会抛出此类异常。另外一种情况是在调用带有固定参数数量的函数传递了过多或不足的实际参数也会触发同样的问题[^5]。 例子: ```python def add(a, b): return a + b add(1) # TypeError: add() missing 1 required positional argument: 'b' ``` 要解决问题可以确保传入足够的参数数目: ```python result = add(1, 2) ``` #### 五、索引超出范围(IndexError) 列表越界指的是尝试访问不存在于序列中的位置所导致的情况。即下标超出了合法区间[-len(list):len(list)-1]之外的部分都会造成这个错误的发生。 下面是一个典型的案例: ```python my_list = ['a', 'b'] print(my_list[2]) # IndexError: list index out of range ``` 为了避免这种情况发生,应该先确认目标索引确实存在于容器之内再做进一步的操作: ```python index = 0 if -len(my_list) <= index < len(my_list): element = my_list[index] else: raise ValueError(f"Index {index} is not valid.") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值