zoukankan      html  css  js  c++  java
  • 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() #实例化后调用是方法
    #对于一个类里面同样的东西到底是函数还是方法,取决谁去调用。

    类本生调用是函数

    实例化对象调用是方法

    个人小站,欢迎访问!http://klvr.xyz
  • 相关阅读:
    在String中添加移动构造函数和移动赋值运算符
    自定义String类,并且实现在STL容器中添加自定义的类型
    allocator例子
    Messages的例子
    java unicode转中文
    Oracle Unicode转中文(解码)
    dom4j解析XML
    如何下载HLS视频到本地(m3u8)
    background-position
    XMPP协议实现即时通讯底层书写 (二)-- IOS XMPPFramework Demo+分析
  • 原文地址:https://www.cnblogs.com/xxks/p/15488678.html
Copyright © 2011-2022 走看看