Python学习之路-----is 与 == 、异常处理

is 与 ==

==

        看代码,

list1 = [1,2,3]
list2 = [1,2,3]

if list1 == list2:
    print("list1和list2相等")
else:
    print("list1和list2不相等")

结果:
list1和list2相等
list1 = [1,2,3]
list2 = list1

if list1 == list2:
    print("list1和list2相等")
else:
    print("list1和list2不相等")

结果:
list1和list2相等
list1 = [1,2,3]
list2 = [1]

if list1 == list2:
    print("list1和list2相等")
else:
    print("list1和list2不相等")

结果:
list1和list2不相等

    在Python中变量的名字存储的是变量的内存地址,变量之间的赋值是内存地址之间的传递。  再结合以上三个例子不难总结出: ==比较的是两侧数据的是否相等

is

list1 = [1,2,3]
list2 = list1

print(id(list1),id(list2))
if list1 == list2:
    print("list1和list2相等")
else:
    print("list1和list2不相等")

list2.append(4)
print(id(list1),id(list2))
if list1 == list2:
    print("list1和list2相等")
else:
    print("list1和list2不相等")


结果:
24088528 24088528
list1和list2相等
24088528 24088528
list1和list2相等

    结合以上例子不难总结出: is比较的是两侧数据的内存地值是否相等。

   一般来说比较两个变量是否相等都是用==,判断某个变量的值是否为None用is。

异常

        当代码执行发生错误的时候解释器就会捕获这个错误(异常),然后由Python解释器对这个异常进行处理,程序也就运行到这个地方终止了。看下面的例子:

f = open("1.txt","r")
content = f.read()
print(content)
f.close()


异常:
Traceback (most recent call last):
  File "E:/C程序/py_pro/1/异常.py", line 1, in <module>
    f = open("1.txt","r")
FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

        在开发的过程中我们总能发现一些潜在的异常,就像上面的代码似的,因此我们要尽可能的处理这个异常。处理异常有两个目的:(1)、为了使异常之后的代码还能执行(2)、得到异常的详细信息

处理异常:try...except:

try:
    f = open("1.txt", "r")
    content = f.read()
    print(content)
    f.close()
except:
    print("以上代码出现异常,正在处理.....")

print("\n\n程序over!")


结果:
以上代码出现异常,正在处理.....


程序over!
把可能出现异常的代码块写在try中,然后在except中做详细的处理。

异常分类

        异常有很多种,例如:NameError、FileNotFindError、IndentError等,如果我们就像上面例子中的except的形式写,那么整个try语句块中的出现的所有类型异常都会按那一种处理形式处理,并且无法获取的到异常的详细信息。因此我们必须做一些细致的处理。

       在Python中所有异常类的父类是Exception,Exception还有一个父类是BaseException。在except后面可以根据异常的类型做具体的处理。

try:
    print(a)

    f = open("1.txt", "r")
    content = f.read()
    print(content)
    f.close()
except NameError as error:
    print("error:%s" % error)
except FileNotFoundError as error:
    print("error:%s" % error)
except:
    print("未知类型错误")

print("\n\n程序over!")


结果:
error:name 'a' is not defined


程序over!

else和 finally:


try:
    print(a)

    f = open("1.txt", "r")
    content = f.read()
    print(content)
    f.close()
except NameError as error:
    print("error:%s" % error)
except FileNotFoundError as error:
    print("error:%s" % error)
except:
    print("未知类型错误")
else:
    print("没有异常")
finally:
    print("无论有无异常都会执行")

print("\n\n程序over!")

结果:
error:name 'a' is not defined
无论有无异常都会执行


程序over!
try后面必须要跟一个except或者finally,else可跟可不跟。

猜你喜欢

转载自blog.csdn.net/shen_chengfeng/article/details/80871909
今日推荐