1.python 中定义函数时如何写可变参数与关键字参数 可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。这些可变参数在函数调用时自动组装为一个tuple 而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict def calc(*args): a = sum(args) print(args) return a li = [1,6,8] print(*li) s = calc(*li) print(s) def d(**kwargs): print(kwargs) dic = {'name':'ldq','age':18} d(**dic,have='qq') 2.什么是lambda表达式 本质是匿名函数,通常是在需要一个函数,但这个函数又不经常使用,但是又不想费神去命名一个函数的场合下使用 3.re模块的match()和search()有什么区别? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配; 也就是说match()只有在0位置匹配成功的话才有返回, 如果不是开始位置匹配成功的话,match()就返回none。 例如: print(re.match(‘super’, ‘superstition’).span()) 会返回(0, 5) 而print(re.match(‘super’, ‘insuperable’)) 则返回None search()会扫描整个字符串并返回第一个成功的匹配 例如:print(re.search(‘super’, ‘superstition’).span())返回(0, 5) print(re.search(‘super’, ‘insuperable’).span())返回(2, 7) 4.1 or 2 和 1 and 2 输出分别是什么?为什么? 1 or 2输出的是:1,1 and 2:2 1是Ture 当使用or时,判断第一个为Ture时 就打印第一个数,不去考虑后面的数 and 是从左到右计算表达式,若值都为Ture时,则取最右边的的值 5.1 < (2 == 2) 和 1 < 2 == 2结果分别是什么?为什么? Flase:即1<True true: 即True == 2 6.[i % 2 for i in range(10)] 和 (i % 2 for i in range(10)) 输出结果分别是什么 一个是列表对象,一个是生成器对象 7.python2 与 python3 有哪些显著地区别 统一了字符编码的支持 增加一些新语法:print 改为函数 python3中没有经典类,只有新式类 xrange 重命名为range python2的默认编码是asscii,python3默认用utf-8编码 字符串是最大的变化之一,这个变化使得编码问题降到了最低可能。在 Python2 中,字符串有两个类型,一个是 unicode,一个是 str,前者表示文本字符串,后者表示字节序列,不过两者并没有明显的界限,开发者也感觉很混乱,不明白编码错误的原因,不过在 Python3 中两者做了严格区分,分别用 str 表示字符串,byte 表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列,这就从源头上阻止了编码错误的问题。 8.描述 Unicode utf-8 gbk 等编码之间的关系? Unicode 可以通过 编码 转化为bytes类型 bytes可以通过相同方式的解码转化为Unicode 9.请描述with的用法?如果自己的类需要支持with语句,应该怎样书写? 用法 with 通过对象的__entry__()方法进入,无论执行过程中是否有异常,最后通过__exit__()结束 只要保证自己的类中有__entry__()与__exit__()方法即可使用with class Open: def __init__(self,filepath,mode='r',encoding='utf-8'): self.filepath=filepath self.mode=mode self.encoding=encoding def __enter__(self): # print('enter') self.f=open(self.filepath,mode=self.mode,encoding=self.encoding) return self.f def __exit__(self, exc_type, exc_val, exc_tb): # print('exit') self.f.close() return True def __getattr__(self, item): return getattr(self.f,item) with Open('a.txt','w') as f: print(f) f.write('aaaaaa') f.wasdf #抛出异常,交给__exit__处理 10.python中如何判断一个对象是否可调用对象?哪些对象可以是可调用对象?如何定义一个类,使对象本身就是可调用对象? 判断是否有call方法