Python常见面试题

1.下面代码输出结果是一样吗?

import copy
a = ('a','b','c')
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(id(b))
print(id(c))
print(id(d))

一样,因为a为不可变对象,对于不可变数据类型,内存中只能有一个相同值的对象.如果a是可变对象,则代码输出的都不一样

可变数据类型:列表list和字典dict
不可变数据类型:整型int、浮点型float、字符串型string和元组tuple

2.请实现:@runtime效果为当调用student_run时会自动打印当前时间

@runtime
def student_run(name):
    print("student"+name+"run")
student_run("张三"")

实现代码

import time

def runtime(function):
    def get_run_time():
        print(time.time())
        function()
     return get_now_time

3.请根据列表list1=[1,2,3,4,5,6,7,8,9],使用一行代码生辰给一个新的列表list2,list2中每个元素是list1中的平方

#方法一 lambda表达式
list2 = list(map(lambda x : x*x,list1))
#方法二 列表推导式
list2=[x*x for x in list1]

4.用python实现冒泡算法

def bubble_sort(list):
    length=len(list)
    for i in range(0,length):
        for j in range(i+1,length):
            if list(i) >list(j):
                list(i),list(j)=list(j),list(i)
    return list

5.用python实现快排

def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]    #找到一个基准值
        #遍历整个列表,将小于这个基准值的元素放到一个子列表中
        less = [i for i in array[1:] if i < pivot]
        #遍历整个列表,将大于这个基准值的元素放到一个子列表中
        greater = [i for i in array[1:] if i>pivot]
        #首先,明确我们对元素为0个/1个的列表无需要排序
        #使用函数递归
        #目标:让我们在一个基准值的一侧变为有序,然后依次返回,让我们的每个基准值的两侧都变得有序
        return quicksort(less)+[pivot]+quicksort(greater)

#这是一些测试样例
print(quicksort([2,5,3,9,7,11]))
print(quicksort([152,134,38796,7438415,1,2272,34345,24,127]))
     

6.python中的私有变量能访问吗,如果能访问,如何访问?

可以访问,通过__类名__变量名访问

7.python中的类有多少方法种类,他们的区别是什么?

  • 实例方法   必传参数self,只有实例可以操作的方法,可以操作实例变量
  • 类方法  必传参数cls,需要添加@classmethod,类可以直接调用,可以操作类变量,
  • 静态方法    脱离类而存在的,既不能操作类变量,也不能操作实例变量

8.python是静态还是动态类型?是强类型还是弱类型?

动态强类型语言

  • 动态还是静态指的是编译器还是运行期确定类型
  • 强类型指的是不会发生隐式转换(如 print(1+"1")就会报错,而php等弱类型就会自动转换)

9.单例模式

#方法一 装饰器
def Singleton(cls):
    _instance={}
    def _singleton(*args,**kwargs):
        if cls not in _instance:
            _instance[cls]= cls(*args,**kwargs)
        return _instance[cls]
    return _singleton

 

posted @ 2020-10-16 20:27  大碗炸酱面  阅读(178)  评论(0编辑  收藏  举报