python一阶段面试题(二)

                            第一阶段面试题二、
1.continue 和break有什么区别?
    1.break是终止循环,跳出循环语句(只能跳出一层循环语句)
        break之后的语句不会执行
    2.continue 是跳过本次循环剩下的语句,重新开始下一次循环
    区别:
        continue终止本次循环,break完全终止循环

2. python中的作用域?
    是python执行过程中,遇到一个变量名时查找变量名所在位置的顺序
    LEGB
        本地作用域(Local)
        外部嵌套函数作用域(Enclosing Locals)
        全局/模块作用域(Global)
        内置作用域(Built-in)
    python中一个变量的作用域是由赋值语句执行的位置来决定的

3.谈谈对闭包的理解?
    闭包(closure)是一个重要语法结构,它能提高代码的重要性
        闭包必须满足三个条件:
            略
    当一个内嵌函数引用外部嵌套函数的变量就形成一个闭包
    闭包的缺点是占用内存比较多

4.Python里的拷贝?理解引用和copy(),deepcopy()的区别.
    l1=[1,2,3,4,[5,6,[7,8]]]
    直接赋值是引用:
        l2=l1  #引用
        l3=l1.copy(浅拷贝)
        import copy
        l4=copy.deepcopy(l1)  #深拷贝

5.python垃圾回收机制?(gc)
    1.主要使用引用计数(reference counting)来跟踪和回收垃圾
        l=[1,2,3]    #此时[1,2,3]引用计数为1
        l2=l.copy()  #此时[1,2,3]引用计数为1
        l2=l         #此时l引用计数为2
        l3=[1,2,l]   #此时l引用计数为3
        del l,l2,l3  #此时l引用计数为0
    2.在引用计数的基础上,通过标记-清除(mark and sweep)解决容器对象可能产生的循环引用问题
        l1=[1,2]
        l2=[3,4]
        l1.append(l2)
        l2.append(l1)
        del l1,l2
    3.分代回收(generation collection)以空间换时间的方法提高垃圾回收的速度

6.什么是lambda函数?它有什么好处?
    首要用途是定义(简单)短小的回调函数
    好处:不用定义变量名
    用完后即被释放

7.  写一段代码删除list重复元素
    l=[1,1,1,2,3,4,5,5,68]
    l=list(set(l))  #不保证顺序

8.介绍一下try-except的用法和作用
    捕获异常,把程序从异常流程转为正常流程并继续执行
    描述:
        except 子句
        else   子句
        finally 子句

9.Python里面如何生成随机数?
    random模块
        模块里有
            random函数生成0~1的实数
            randint(a,b)  生成a~b的整数
            uniform(a,b)  生成a~b的浮点数
            randrange(start,stop,step)
            ...

10.如何在一个function里面设置一个全局的变量?
    解决办法是在function里的赋值语句之前加一条global声明语句
        def f():
            global x 
            x=100

11.单引号,双引号,三引号的区别?
    单引号内可以放双引号
    双引号内可以放单引号
    三引号内可以放单引和双引,三引号的折行会自动转换为'\n'

12.下面代码会输出什么
    def f(x,l=[]):
        for i in range(x):
            l.append(i*i)
        print (l)
    f(2)    #[0,1]
    f(3,[3,2,1])  #[3,2,1,0,1,4]
    f(3)    #[0,1,0,1,4]
    python中函数的缺省参数绑定的对象会跟随函数一直存在,当参数不够时
    会用缺省参数绑定的对象传参

13.这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
    当需要写一个函数,但并不确定用户在调用时需要多少个实参时可以使用上述的定义方式
    不管调用者传入多少个位置形参都会放于args绑定的元组中
    不管调用者传入多少个关键字参数都会放在kwargs绑定的字典中
    args和kwargs是约定的名字,可以换为a,b等

14.简述函数式编程
    函数式编程中,函数是基本单位,除了匿名函数,python中还常使用filter,map,reduce,apply等
    函数来支持函数式编程(import functools)

15.什么是匿名函数,匿名函数有什么局限性?
    lambda 函数

16 如何捕获异常,常用的异常机制有哪些?
17. 去除列表中的重复元素?
18. Python 中 list 和 tuples 的差别是什么?
21. 代码举例什么是 decorator。
22. 单引号,双引号,三引号的区别
23. 请用自己的算法,按升序合并如下两个 List , 并去除重复的元素
List1 = [2,3,8,4,9,5,6]
List2 = [5,6,10,17,11,2]
24. 有一个多层嵌套的列表 A = [1,2,[3,4,[‘434’,[...]]]],请写一段代码遍历
A 中的美个元素并打印出来.
25. 用自己的话说明迭代器和生成器,它们之间的关系?
26. Python 是如何进行内存管理的?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值