python面试题(22-33)

22、字符串、列表、元组、字典每个常用的5个方法?

  • 字符串、列表、元组、字典每个常用的5个方法?

    1. 字符串:

      1. 1,find通过元素找索引,可切片,找不到返回-1

      2. 2,index,找不到报错。

      3. *3,split 由字符串分割成列表,默认按空格。

      4. 4,captalize 首字母大写,其他字母小写。

      5. ,upper 全大写。

      6. ,lower 全小写。

      7. title,每个单词的首字母大写。

      8. startswith 判断以什么为开头,可以切片,整体概念。

      9. endswith 判断以什么为结尾,可以切片,整体概念。

      10. format格式化输出

    2. 字典:

      1. key: 输出所有的键 clear:清空 dic:删除的键如果没有则报错 pop:键值对删,有返回,没有原来的键会报错(自行设置返回键就不会报错) popitem:随机删键值对 del:删除的键如果没有则报错 改 update

    3. 列表:

      1. append:在后面添加。 Insert按照索引添加, expend:迭代着添加。 list.extend(seq) - 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) pop 删除 (pop 有返回值) remove 可以按照元素去删 clear 清空列表

    4. 元组

      1. 1、cmp(tuple1, tuple2):比较两个元组元素。 2、len(tuple):计算元组元素个数。 3、max(tuple):返回元组中元素最大值。 4、min(tuple):返回元组中元素最小值。 5、tuple(seq):将列表转换为元组。

23,如何使用python删除一个文件?
import os
path=''   #文件路径
if os.path.exists(path):
   os.remove(path)  #两种删除方法
   #os.unlink(path)
else:
   print('no such files') #返回文件不存在
24,列举常用模块

os(路径), re , math, json, random , time, request, pymysql

25、args和*kwarg作用?

  1. 都是传入可变参数

  2. 不确定要往函数中传入多少个参数用 *args,他会把可变参数打包成元组

  3. 不知道要往函数中传入多少个关键词参数用 **kwargs他会把可变参数打包成字典

26、is和==的区别?

  • is:判断内存地址是否相等

  • ==:判断数值是否相等

27、简述Python的深浅拷贝以及应用场景?

copy():浅copy,浅拷贝指仅仅拷贝数据集合的第一层数据

deepcopy(): 深copy,深拷贝指拷贝数据集合的所有层

应用场景:不想单独新建模版来一个一个参数,又不想修改默认模版而影响其他机器阈值,深拷贝来完成

28,谈谈你对面向对象的理解?

我的理解是,万物皆对象,然后三大特征是,继承,封装,多态,

继承就是将一个东西共有的属性抽象成父类,每一个子类都可以继承父类的属性。

封装就是减少大量的重复代码,将复杂重复的功能封装起来,使用的时候直接调用,方便使用,提高复用性。

多态就是一种事物有多种形态(动物类)依赖于继承。

29,面向对象中的继承有什么优点?

减少多余代码,让类与类之间产生关系,为多态打基础

30,python实例方法,类方法,静态方法的区别和作用?

@classmethod 修饰的方法为类方法;

采用 @staticmethod 修饰的方法为静态方法;

不用任何修改的方法为实例方法。

31,logging模块的作用以及应用场景

logging是python一个标准库模板,由标准库模块提供日志记录API 的关键好处是 所有python模块都可以使用这个日志记录功能。

32,简述生成器,迭代器,可迭代对象以及应用场景
  • 迭代器,内部实现next方法,帮助我们向后一个一个取值

  • 生成器,一个函数内部存在于yield关键字,v= 函数()。

    应用场景:-range/xrange

    --python2 range(1000000000),立即创建;xrange(10000000)生成器

    --python3: range(10000000000)生成器,没有xrange

    ---redis获取值:

  • 可迭代对象:一个类 内部实现iter方法 且返回一个 迭代器 [能循环就是可迭代对象]

    class Foo(object):   
       def __iter__(self):        
           return iter([11,22,44])

    obj = Foo()

 

应用场景:wtforms 中对form 对象进行循环时候,显示 form 中包含所有字段

     -列表,对象,元组。如果想要一个对象被for 循环,那么就需要在当前类中定义 __iter__
  • 装饰器: 在不改变原函数代码的基础上,在执行前后进行定制操作。

应用场景:

-- flask 路由系统

-- csrf

-- flask before_request

-- django内置认证

-- django缓存

33,如何判断是函数还是方法:
class Foo():
   def aa(self):
       print('aa')
       
Foo.aa()  #函数
ob = Foo()
ob.aa() #实例化后调用是方法
#对于一个类里面同样的东西到底是函数还是方法,取决谁去调用。

类本生调用是函数

实例化对象调用是方法

上一篇:sqlserver获取当前月天数


下一篇:33. 搜索旋转排序数组