社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中try语句的放置位置

Schang • 5 年前 • 1532 次点击  

1我正在学习python,发现很难理解try-and-except语句的位置

def divide (n1, n2):
    try:
        d = n1/n2
    except :
        print("Wrong")

然后除以(10,0)得到正确的“错误”

但是如果我把try放在函数的顶部,它就不起作用了

try:
    def divide (n1, n2):
        d = n1/n2
except :
        print("Wrong")

然后除以(10,0)产生常规的回溯错误。

为什么在第二个例子中excel不起作用?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50271
 
1532 次点击  
文章 [ 5 ]  |  最新文章 5 年前
Ilman Teguh Prasetya
Reply   •   1 楼
Ilman Teguh Prasetya    5 年前

在python中,如果您的execute结果出错,则尝试execute或run。在你的例子2中 定义 (功能)和 定义 在python中,在调用之前不会执行,因此except不起作用

Hari
Reply   •   2 楼
Hari    5 年前

由于函数定义正在尝试。。。除了块而不是函数调用。而且除非调用函数定义,否则函数定义将不会被执行(函数调用应该始终在try…except中)。因此,您提到的第二个代码的效率不足以捕获异常。

下面的代码也可以工作:

def divide (n1, n2):
    d = n1/n2

try:
    divide(12, 0)
except:
    print("Wrong") 
knh190
Reply   •   3 楼
knh190    5 年前

你的第二次尝试只包括 定义 函数,以及 def 也不例外。如果你把这个叫做某处: divide(10, 0) ,它已经在try catch块之外。

U10-Forward
Reply   •   4 楼
U10-Forward    5 年前

这是因为如果不在try except部分中运行函数,它将始终运行,因为函数将始终在不被调用的情况下工作,如果在try except中调用它,它将工作:

try:
    def divide (n1, n2):
        d = n1/n2
    print(divide(0,0))
except :
    print("Wrong")

它将提供:

Wrong

但在所有的解决方案中,你的1个解决方案是最好的。

maxi.marufo
Reply   •   5 楼
maxi.marufo    5 年前

第一个例子是正确的使用方法。

在第二个例子中,定义函数:

    def divide (n1, n2):
        d = n1/n2

所以,当您调用它时,try语句甚至都不执行。try和except语句不在范围内,而且在您想要使用它们的方式上毫无用处。在本例中,如果在到达try时无法定义devide函数,则将打印“错误”输出,但情况并非如此

Here 您将在Python中找到如何处理错误和异常的文档。