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.两个队列如何实现一个栈?