python面试题汇总02

1.闭包是什么

     python中往往出现函数套函数的情况,里面的函数引用可引用外部的变量,则这个函数就构成闭包。

2.python中可变变量有哪些,不可变变量有哪些?

    可变变量有:list,set,dict

   不可变变量有:int,float,boolean,tuple,str

    不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。

    可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变

3.django的项目是如何启动的

4.tuple的长度为1时有什么要注意的

 tup = (1,);     # 创建了一个只有一个元素1的tuple,因为tup=(1)相当于tup=1

5.list的实现方式

     list是用下边的C语言的结构来表示的。ob_item是用来保存元素的指针数组,allocated是ob_item预先分配的内存总容量

typedef struct {
    PyObject_VAR_HEAD
    PyObject **ob_item;
    Py_ssize_t allocated;
} PyListObject;

      python采用了如下的策略:在建立空表(或者很小的表)时,系统分配一块能容纳8个元素的存储区;在执行插入操作(insert或append)时,如果元素存储区满就换一块4倍大的存储区。但如果此时的表已经很大(目前的阀值为50000),则改变策略,采用加一倍的方法。引入这种改变策略的方式,是为了避免出现过多空闲的存储位置

     以上的元素里面存储的内容是list内元素的地址

     tuple的实现方式与list类似但是tuple固定长度,不需要动态分配内存

6.list的方法

    append向后面添加元素,参数可以是任何东西,将作为元素添加到列表尾部

    extend使用一个序列扩展另一个list,参数是序列。序列中的元素将逐项添加到列表的尾部,a=[],a.extend((1,2,3)),那么a=[1,2,3]

7.什么是栈溢出,什么是内存溢出

     在Python中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

8.两个队列如何实现一个栈?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值