315道面试题【71-80】

71、异常处理写法以及如何主动跑出异常(应用场景)

try:
    pirnt('123')    
except:
    print('456')

通过raise 异常对象主动抛出异常

72、什么是面向对象的mro

Method Realtion Order 用来制作一个继承关系的列表
MRO列表的制作原则:
1.子类永远在父类的前面
2.如果继承了多个父类,那么按照()中的顺序在列表中摆放
3.如果多个类同时继承了一个父类,孙子类中只会选取第一个父类中的父类的该方法

73、isinstance作用以及应用场景?

检测一个数据是否由指定的类型创建

74、写代码并实现:

给定一个由编码器组成的数组,返回两个数字的索引,使它们加起来成为一个特定的目标。你可以假设每一个输入都会
只有一个解决方案,您可能不会使用相同的元素两次。
例子:
给定nums =[2,7,11,15],目标= 9,
因为nums[0] + nums[1] = 2+ 7= 9,
返回[0,1]

In [102]: def nums(lists,n):^M
     ...:     if isinstance(lists,list):^M
     ...:         for i in range(len(lists)):^M
     ...:             for v in lists:^M
     ...:                 if lists[i]+v == n:^M
     ...:                     print(i,lists.index(v))^M
     ...:                     break
     ...: nums([1,2,3,4,5],9)
     ...:
3 4
4 3

75、json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

可以处理数组、对象
定制datetime类型

In [107]: import json

In [108]: class ComplexEncoder(json.JSONEncoder):
     ...:   def default(self, obj):
     ...:     if isinstance(obj, datetime):
     ...:       return obj.strftime('%Y-%m-%d %H:%M:%S')
     ...:     elif isinstance(obj, date):
     ...:       return obj.strftime('%Y-%m-%d')
     ...:     else:
     ...:       return json.JSONEncoder.default(self, obj)
     ...:

In [109]: json.dumps({'now':datetime.now()},cls=ComplexEncoder)
Out[109]: '{"now": "2018-07-10 18:12:31"}'

76、json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

json.dumps(jsonData,ensure_ascii=False);

77、什么是断言?应用场景?

在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助

python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。

78、有用过with statement吗?它的好处是什么?

with语句的作用是通过某种方式简化异常处理
自动管理文件关闭

79、使用代码实现查看列举目录下的所有文件。

import os

In [119]: for i in os.listdir():
     ...:     print(i)
     ...:

80、简述 yield和yield from关键字。

yield 的作用就是把一个函数变成一个生成器, 带有yield的函数不再是一个普通的函数。python解释器会将其视为一个generator

猜你喜欢

转载自blog.csdn.net/qq_37275405/article/details/80990455
今日推荐