python面试总结(三)拷贝与通信

来源:互联网 发布:批量域名代理备案 编辑:程序博客网 时间:2024/05/21 10:47

1.请写出下列结果?(深拷贝与浅拷贝)

import copya = [1, 2, 3, 4, ['a', 'b']]b = ac = copy.copy(a)d = copy.deepcopy(a)a.append(5)a[4].append('c')print(a)print(b)print(c)print(d)# 答案如下:[1, 2, 3, 4, ['a', 'b', 'c'], 5][1, 2, 3, 4, ['a', 'b', 'c'], 5][1, 2, 3, 4, ['a', 'b', 'c']][1, 2, 3, 4, ['a', 'b']]


2.进程间通信(IPC)有那些方式?

1 无名管道通信
无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,
而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。


2 高级管道通信
高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,
则它算是当前程序的子进程,这种方式我们成为高级管道方式。


3 有名管道通信
有名管道 (named pipe) : 有名管道也是半双工的通信方式, 但是它允许无亲缘关系进程间的通信。


4 消息队列通信
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。
消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。


 5 信号量通信
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。
它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。


 6 信号
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。


7 共享内存通信
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,
这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,
它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。


 8 套接字通信
套接字( socket ) : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。


3.简述这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

1.如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,我们可以使用*args(单星号).如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候我们可以使用**kwargs(双星号),
args,kwargs两个标识符是约定俗成的用法。 


2.另一种答法:当函数的参数前面有一个星号*号的时候表示这是一个可变得位置参数,
两个星号**表示这是一个可变的关键词参数。星号*把序列或者集合解包(uppack)成位置参数,
两个星号**把字典解包成关键词参数。 


有时候,我们需要往函数中传入未知个数的参数或关键词参数。
有时候,我们也希望把参数或关键词参数储存起来,以备以后使用。
有时候,仅仅是为了节省时间。


原创粉丝点击