Python面试题

1.请描述with的用法?如果自己的对象要支持with语句,应该如何书写?

用法:

#操作文件是时候可以这么用
with open('a.txt') as f:
    '代码块'

为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法

class Open:
    def __init__(self,name):
        self.name=name

    def __enter__(self):
        print('出现with语句,对象的__enter__被触发,有返回值则赋值给as声明的变量')
       
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('with中代码块执行完毕时执行我啊')


with Open('a.txt') as f:
    print('=====>执行代码块')
  

2.python中如果判断一个对象是否可调用对象?那些对象可以是可调用对象?如何定义一个类,使其对象本身就是可调用对象?

基本上判断python对象是否为可调用的函数,有三种方法:

1、使用内置的callable函数

callable(func)

用于检查对象是否可调用,返回True也可能调用失败,但是返回False一定不可调用

 

2、判断对象类型是否是FunctionType

type(func) is FunctionType
# 或者
isinstance(func, FunctionType)

 

3、判断对象是否实现__call__方法

hasattr(func, '__call__')

如果定义一个类的话,里面只要定义了__call__方法,对象就可以被调用了

 

posted @ 2018-03-31 22:14  明-少  阅读(168)  评论(0)    收藏  举报