Python编程面试常见问题有哪些
发布时间:2025-05-12 13:37:13 发布人:远客网络
一、Python编程面试常见问题有哪些
1、Python编程面试题目一:python下多线程的限制以及多进程中传递参数的方式,以及区别
2、(1)python下多线程的限制以及多进程中传递参数的方式
3、python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。
4、多进程间共享数据,可以使用 multiprocessing.Value和 multiprocessing.Array
5、在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法(实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。
6、多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。
7、Python编程面试题目二:lambada函数
8、lambda函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
9、更多关于Python编程的技巧,干货,资讯等内容,小编会持续更新。
二、python小白的问题
1、你好,你这个问题其实也好理解:
2、你的这一步,目的是将aliens这个列表中追加30个相同的alien字典进去,在没有下面代码的时候,你把这两个语句执行完,输出aliens,确实可以看到你想要的结果,就是字典中有30个相同的alien字典。
3、但是重点是,如果你直接将alien这个字典名放进aliens.append()函数中作为参数,则向appens()函数中传的其实是alien在内存中的地址,即传址引用。举个例子来说:
4、dic={'a':'b'}//此时内存分配给dic的地址比如说是0x11111111-0x22222222
5、我现在想向空列表li中追加2个相同的dic,则如果我写的是:
6、则此时相当于是将0x11111111-0x22222222这个地址追加进去了,也就是说这个for循环执行后,里面的两个元素读取的实际上都是0x11111111-0x22222222这个范围的数据。如此一来,在我没有修改li这个列表中字典键值的时候,输出li,我们看到的是两个元素是一样的,到现在一切还都正常。
7、但是因为两个元素读的都是0x11111111-0x22222222这个范围的内容,所以我们对每个li中的每个字典键值进行修改都会影响所有的列表元素中相应的键值。
8、其实就是追加字典的时候,给字典多加了个copy()函数,但是意义就不同了,还是要从内存分配上想,这样一来,每次追加到aliens列表里的字典都是将alien这个字典在另一块内存放个备份,然后将备份的地址中的数据传给aliens列表。拿上面我举的li和dic的例来来说就是,原始dic的数据在内存中被分配的地址是0x11111111-0x22222222,则我向li中追加的时候我使用的是dic.copy(),则实现过程就相当于我把0x11111111-0x22222222给复制一份,比如说复制的这份被分配的内存为0x33333333-0x44444444,然后第2次追加的时候还是将0x11111111-0x22222222给复制一份,比如说这次的备份被分配的内存是0x55555555-0x66666666,则此时li中的两个元素,实际上第1个字典元素取的是0x33333333-0x44444444这个范围的地址;而第2个元素取的是0x55555555-0x66666666这个范围的地址,如此一来,由于列表li中每个字典元素的地址都是不同的,以后在对li中的每个字典元素进行修改的时候只会影响相应范围内的数据,也就互不干涉了.
三、python的问题
1、这是因为python中函数使用Dynamic scoping。
2、truth()
首先,lambda也是一种函数。
3、Lexical scoping大致上是指,若函数体内引用了外部变量,那么在函数体内该变量的值永远和函数定义前一样,所以上述代码运行后是42,42;
4、Dynamic scoping中该外部变量的值则取决于函数调用的时刻。若该外部变量在函数定义后改变,此后调用函数会采用更新后的值。
5、这里还涉及到闭包的概念,有兴趣可以自己了解一下。这些知识我也有点生疏了,语言组织得不好,见谅。