python基础面试题整理---从零开始 每天十题(02)

系统 1448 0

  书接上回,我们继续来说说python的面试题,我在各个网站搜集了一些,我给予你们一个推荐的答案,你们可以组织成自己的语言来说出来,让我们更好的做到面向工资编程

一、Q:说说你对zen of python的理解,你有什么办法看到它。

A:The Zen of Python是Python语言的指导原则,遵循这些基本原则,输入import this,然后直接运行即可

二、Q:什么是元类(meta_class)

A:我们定义类来创建对象,但是现在我们知道类也是对象。那么是通过什么来创建类呢?答案就是元类。我们可以将元类称之为类工厂。如果我们定义了metaclass属性,Python就会使用这个元类来创建类Foo。注意,编译器首先读取 class Foo(object) ,这时并不会在内存中创建Foo类。Python会继续查找类定义中的 __meatclass__ ,如果找到了,就使用它来创建类Foo,如果没有找到,就使用type来创建类。Python工作流程如下:首先检查 Foo 中是否具有属性 __metaclass__ ?如果找到,就使用 __metaclass__ 定义的元类在内存中创建一个类对象。如果在类定义中没有找到这个属性,就在模块级别中进行查找。如果还是没有找到,就会使用父类Bar中的元类来创建类。注意:类中的 __metaclass__ 属性不会被子类继承,但是父类中的 __class__ 会被继承。这里写的比较片面,大家可以参考 https://www.jianshu.com/p/cec91b9ef2a4

三、Q:对比一下dict中 items 与 iteritems

A:items是可以将字典中的所有项,以列表方式返回。因为字典是无序的,所以用items方法返回字典的所有项,也是没有顺序的。

      iteritems方法作用:与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器。

四、Q:有用过with statement吗?它的好处是什么?
A: with 语句的作用是通过某种方式简化异常处理,它是所谓的上下文管理器的一种

             with open(
            
              '
            
            
              output.txt
            
            
              '
            
            , 
            
              '
            
            
              w
            
            
              '
            
            
              ) as f:
        f.write(
            
            
              '
            
            
              Hi there!
            
            
              '
            
            )
          

  当你要成对执行两个相关的操作的时候,这样就很方便,以上便是经典例子,with语句会在嵌套的代码执行之后,自动关闭文件。这种做法的还有另一个优势就是,无论嵌套的代码是以何种方式结束的,它都关闭文件。如果在嵌套的代码中发生异常,它能够在外部exception handler catch异常前关闭文件。如果嵌套代码有return/continue/break语句,它同样能够关闭文件

五、Q:说说decorator的用法和它的应用场景,如果可以的话,写一个decorator(装饰器)

  A:装饰器就是把函数包装一下,为函数添加一些附加功能,装饰器就是一个函数,参数为被包装的函数,返回包装后的函数:

            
              def
            
            
               d(fp):
    
            
            
              def
            
             _d(*arg, **
            
              karg):
        
            
            
              print
            
            
              "
            
            
              do sth before fp..
            
            
              "
            
            
              
        r
            
            = fp(*arg, **
            
              karg)
        
            
            
              print
            
            
              "
            
            
              do sth after fp..
            
            
              "
            
            
              return
            
            
               r
    
            
            
              return
            
            
               _d
 
@d

            
            
              def
            
            
               f():
    
            
            
              print
            
            
              "
            
            
              call f
            
            
              "
            
          

应用场景应用场景: 引入日志, 函数执行时间统计, 执行函数前预备处理, 执行函数后清理功能, 权限校验等场景, 缓存, 事务处理。 当函数可以作为参数传递的语言,可以使用装饰器

六、Q:如何在一个函数内部修改全局变量

A:利用global 修改全局变量

 

            
              #
            
            
              !/usr/bin/env python
            
            
              
#
            
            
               -*- coding: utf-8 -*-
            
            
              
a 
            
            = 1

            
              def
            
            
               change():
    
            
            
              global
            
            
               a
    a 
            
            = 3

            
              print
            
            
              (a)
change()

            
            
              print
            
            (a)
          

 

七、Q:列出5个python标准库

  A:os:提供了不少与操作系统相关联的函数

     sys:   通常用于命令行参数

     re:   正则匹配

     math: 数学运算

     datetime:处理日期时间

八、Q:简述面向对象中__new__和__init__区别

  A:1、__new__至少要有一个参数,代表当前类,此参数在实例化时由Python解释器自动识别

     2、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名))__new__出来的实例,或者直接是object的__new__出来的实例

     3、__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

     4、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。

九、Q:python中生成随机整数、随机小数、0--1之间小数方法

  A:随机整数:random.randint(a,b),生成区间内的整数

     随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数

     0-1随机小数:random.random(),括号中不传参

十、Q:python2和python3区别?列举5个

  A:1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')

       Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'

    2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存

    3、python2中使用ascii编码,python3中使用utf-8编码

    4、python2中unicode表示字符串序列,str表示字节序列

         python3中str表示字符串序列,byte表示字节序列

   5、python2中为正常显示中文,引入coding声明,python3中不需要

   6、python2中是raw_input()函数,python3中是input()函数

   7、 浮点数除法操作符“/”和“//”的区别

    "/":     

    Python2:若为两个整形数进行运算,结果为整形,但若两个数中有一个为浮点数,则结果为浮点数;

    Python3:为真除法,运算结果不再根据参加运算的数的类型。

    "//":
    Python2:返回小于除法运算结果的最大整数;从类型上讲,与"/"运算符返回类型逻辑一致。
    Python3:和 Python2 运算结果一样。

 

 

题目都是各种散装百度来的,答案也是如此,但是自己写了一遍,也读了一遍,也觉得自己收获了不少。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论