简单 Python 快乐之旅之:Python 基础语法之异常处理专题

Defonds 2020-11-13 04:52:39
Python 简单 之旅 快乐


1. Python try 语句示例

Python 的 try 语句用于处理在运行时由 Python 解释器抛出的异常。当解释器抛出一个错误时,程序的执行会突然中止。要避免这种情况我们可以使用 try 语句对异常进行编程式的捕捉和处理。

1.1. Python 中 try 语句的语法

try:
#your code that may throw exceptions
statement(s)
except Exception1:
#If Exception1 is thrown, then execute this block.
statement(s)
except Exception2:
#If Exception2 is thrown, then execute this block.
statement(s)
else:
#If there is no exception then execute this block.
statement(s)

将你可能抛异常的代码包含于 try 语句块中,然后跟随于 except 语句块。你可以处理 try 语句块中的代码所抛出的多种异常。假如你的 try 语句块中的代码能够抛出两种类型的异常,我们可以使用两个 except 语句块对两种异常进行分别处理。你可以为可能发生的每一种异常类型分别提供后续的执行语句块。
else 语句块是可选的。如果你提供了 else 语句块,它只会在 try 语句块没有抛出任何异常的时候执行。

1.2. try 语句块的示例

本示例中,我们进行一个两数相除的运算。当被除数为零的时候 Python 解释器将会抛出一个异常,我们使用 except 语句块对其进行捕捉。

# Example for Python Try Catch
a = 3
b = 0
c = 0
try:
c = a / b
except ZeroDivisionError:
print("b is zero. Correct the value or your logic.")
print(c)

执行和输出:
try 语句块的示例.png
如果我们不使用 try 语句块会发生什么呢?
如果我们不使用 try 语句块会发生什么呢.png

2. TypeError: method() takes 0 positional arguments but 1 was given

这种错误说的是,根据该方法的定义,它不接受任何参数,但是我们却传给它一个参数。
以下示例演示了如何重现这种错误:

# TypeError: method() takes 0 positional arguments but 1 was given
class Laptop:
def details():
print("Hello! I am a laptop")
laptop1 = Laptop()
laptop1.details()

执行和输出:
不接受任何参数,但是我们却传给它一个参数.png
你可能会有疑问,在调用 laptop1 对象的 details() 方法的时候明明没有传给它任何参数呀,但怎么就抛出了这种 TypeError 呢?
在默认情况下,如果方法不是一个静态的 Python 方法,会隐式地将对象 (self) 作为参数传递给它。因此,在你调用 laptop1.details() 的时候,实际上被调用的是为 laptop1.details(laptop1)。因此为了遵守这一内在行为,我们需要在定义 details() 方法的时候就传给它一个参数:

# Provide an argument in the definition of details() method
class Laptop:
def details(self):
print("Hello! I am a laptop")
laptop1 = Laptop()
laptop1.details()

执行和输出:
在定义 details() 方法的时候就传给它一个参数.png
当然,还有一个办法,就是将其定义为一个静态方法。你可以使用注解 @staticmethod 告诉 Python 解释器说明这是一个静态方法:

# Tell Python Interpreter that this method is a static method
class Laptop:
@staticmethod
def details():
print("Hello! I am a laptop")
laptop1 = Laptop()
laptop1.details()

执行和输出:
将其定义为一个静态方法.png

参考资料

版权声明
本文为[Defonds]所创,转载请带上原文链接,感谢
https://defonds.blog.csdn.net/article/details/100485491

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database