Python面试题

一、 python 面试题

A、 静态方法和类方法

  • 解释:
  1. static method:静态方法可以没有参数,静态方法和实例方法修改类属性需要通过类名修改(类名.类属性=修改值)
  2. class method:类方法与实例方法的区别,实例方法是通过对象调用的,类方法可以通过类名来调用,还可以通过对象名来调用。往往对一个类属性进行修改时用类方法,还可以在类方法里调用类本身创建一个对;类方法里面至少要有一个参数(cls,这个参数也可以为别的,只是大家都用这名来表示传入的参数是一个类)。
  3. 实例方法、静态方法、类方法都可以修改类属性。

补全程序

  1. 调用 foo 函数,参数传入1
    a.foo(1)
    
  2. 调用 class_foo 函数,参数传入1
    A.class_foo(1)   通过类名调用
    a.class_foo(1)   通过对象名调用
    
  3. 调用 static_foo 函数,参数传入1
    A.static_foo(1)   通过类名调用
    a.static_foo(1)   通过对象名调用
    


B、 修改字符串

解决方案

二、 Python 面试题

A、 填空题

  1. Python 使用符号 (#) 标示注释, 还有一种叫做 (''',也叫文本注释) 的特别注释。
  2. 可以使用 () 符号把一行过长的 python 语句分解成几行;多个语句也可以写在一行,语句之间要有 (;) 符号隔开。
  3. 每一个 python 的 (.py 文件) 都可以被当做一个模块,导入模块要使用关键字 (import)。
  4. 所有的 python 对象都有的三个特性:(封装)、(继承)、(多态)。
  5. Python 的数字类型分为 (int)、(long)、(float)、(double)、(bool)、(complex复数类型)
  6. Python 序列类型包括 (元组)、(列表)、(字符串) 三种;(字典) 是 Python 中唯一的映像类型。
  7. Python 的标准类型内建有:(input)、(print)、(open)等。内建:可以直接使用的函数
  8. Python3 的传统除法运算符是 (/),地板除法运算符是 (//)。
  9. 设 s="abcdefg",则是 s[3]值是("d"), s[3:5]值是("de"),s[:5]值是("abcde"), s[3:]值是("defg"), s[::2]值是("aceg"), s[::-1]值是("gfedcba") s[-2:5]值是(""空)
  10. 删除字典中所有元素的函数是 (clear()),可以将一个字典的内容添加到另外一个字典中的函数是 (update()),返回包含字典中所有键的列表的函数是 (keys()),返回包含字典中所有值的列表的函数是 (values()),判断一个键在字典中是否存在的函数是 (python2 中的 has_key("key"))。

    python3里面没有has_key,python2有这个函数

三、 Python 面试题

解答:

  1. 类是于一个模板,而对象则是这个模板的产物;对象名.类方法名;实际上是默认调用了一个new方法,它为对象开辟了一个空间,然后把创建的空间返回,把刚刚返回的空间传入init方法,紧接着默认调用init方法,做一些初始化的工作,接下来才会把一个真正的对象给一个变量。
  2. 第一步:用a变量保存列表1到100的值:(a = [x for x in range(1, 101)]); 第二步:用b变量保存a列表没三个数作为一个整体的第一个数的下标:(b = [x for x in range(0, len(a), 3)]); 第三步:每次从b列表中去一个下标然后去以这个为头下标在a列表中取出三个数作为一个新的列表:(a = [a[i:i+3] for i in b])
  3. 第一步:把列表转换成(set)集合;第二步:再把集合转换成列表。
  4. 使用 (os.walk("路径")) 可以遍历路径下的文件以及子目录下的文件,当使用该函数后每一级目录都会生成1个元组,每一个元组又包含3个列表:第一个列表保存当前的路径,第二个列表保存当前路径下的所有文件夹,第三个列表保存当前路径下的所有文件

    /work/practice/python/008_package路径下的内容

    解决方法:

    执行结果:
  5. 传入的参数确定生成的元素个数,判断该元素是否在列表内部

  6. 方法一:(a=100;b=200 a,b=b,a); 方法二:(a=a+b b=a-b a=a-b)

  7. 在函数体内部使用(global)关键字

  8. 如果是可变类型参数,那么只初始化一次


    第一次传入参数10的时候列表被初始化,也就是在内存中被存放在一个位置;第二次传入字符串(a)的时候,也就是在第一次被初始化的列表后面添加(a)字符串,最后 list3 和 list1 的引用都指向这个内存,所以值会相同。
    注意:当多次想要一个空列表时,可以在函数体内部定义一个局部的空列表,防止出现上面的问题。

如何查找任意模块的文件位置

    格式:import 模块名
    格式:模块名.__file__   每一个模块内部都有一个__file__属性

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/luosir520/p/11446581.html