1.使用列表生成一个10*10的二维list,每一项的值都为0,再将该列表0行0列到位置0设为1
list = [ [0 for col in range(10)] for row in range(10)]
for i in list:
if i[0]==0;
i[0]=1
print(list)
2.解释下列情况中“*”代表什么含义?
1.def fun(*args,**kwargs):
pass
2._, *r, _= range(100)
3.fun(*a)
4,fun(a,**b)
5,fun(a ** b)
*args,**kargs都是可变长度参数,*args可以当作可容纳多个变量组成的list,**kwargs可以当作容纳多个key和value的dict
*a *它可以拆开数列"list"的数值作为位置参数,并把这些位置参数当作参数传递给函数来使用
fun(*l)等价于fun(1,2,3)
使用”**”调用函数,这种方式我们需要一个字典.注意:在函数调用中使用”*”,我们需要元组;在函数调用中使用”**”,我们需要一个字典
>>> d={'b':5, 'c':7}
>>> fun(1, **d)1 5 7
a ** b 表示a的b次方
3.哪些数据类型可以作为dict的键部分,哪些可以作为dict的value部分,如何删除一个键值对?
key作为键是不可以重复的,字典的键必须是不可变类型,string,元组,int
value作为值可以选取任意类型
del dict['Tom'] #删除某一个条目
4.使用Python如何调用系统命令,并返回命令调用结果
output = commands.getstatusoutput('ps aux')
5.使用sort方法为如下数据按accuracy_rate字段数值大小升序排序(accuracy_rate相等时按照value值降序)
data = [{'name':'Linux','value':12,'accuracy_rate':'44'},{'name':'Windows','value':21,'accuracy_rate':'76'},{'name':'Android','value':8,'accuracy_rate':'90'},{'name':'Os','value':32,'accuracy_rate':'90'}]
data.sort(key=operator.itemgetter('accuracy_rate'), reverse = False) #默认为升序, reverse=True为降序
print (data)
6使用正则匹配在单引号或者双引号中任意文本的方法(注:单引号里可能存在双引号,双引号里也可能存在单引号)
a="我是一个超级'级'chang'的'字'符'串"
res = "".join(re.findall(r"\w+",a))
print(res)#我是一个超级chang的字符串
使用"".join(re。findall。。。。)方法可以实现此功能。
7,对于以下函数哪些传参是正确的?(A,B,D,F)多选题
def f(a,b,c="1",d="2",*args,**kwargs):
pass
A.f(1,2,)
B.f(b=1,a=2)
C.f(a=1,2,c=1)
D.f(1,2,d=3,f=4)
E,f(*(1,2),**{"c":1,"d":2,"a":5})
F.f(*(1,),**{"c":1,"d":2,"b":5})
8.下面的代码输出什么?
list = [1,2,3,4,5]
print(list[10:])
#输出一个[]列表
9.考虑以下Python代码,如果运行结束,命令中的运行结果是什么?
l=[]
for i in range(10):
l.append({'num':i})
print(l) #[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}, {'num': 5}, {'num': 6}, {'num': 7}, {'num': 8}, {'num': 9}]
在考虑以下代码,运行结果是什么?
l=[]
a={'num':0}
for i in range(10):
a['num']=i
l.append(a)
print (l) # [{'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}]
原因是列表添加了多个字典,i每增加1,num的值会改变,list列表的num值都会发生改变,多个num的指向的是一个内存地址
10.请简述你对单元测试的理解并列举Python单元测试相关的库和工具
单元测试是用来对一个类,函数,或者一个模块进行正确性验证工作,Python有自带的单元测试模块unittest
11.请给出下面代码片段的输出并阐述涉及的Python相关机制
def dict_updater(k,v,dict=[]):
dict[k]=v
print (dict)
dict_updater('one',1)
dict_updater('two',2)
dict_updater('three',3,{})
输出:{'one': 1}
{'one': 1, 'two': 2}
{'three': 3}
12.请列举你所知道的Python代码检测工具以及他们的区别?
PyFlakes:静态检查Python代码逻辑错误的工具。
Pep8: 静态检查PEP8编码风格的工具。
NedBatchelder’s McCabe script:静态分析Python代码复杂度的工具。
13.请给出下面代码片段的输出内容,
def say_hi(func):
def wrapper(*args,**kwargs):
print("hi")
ret=func(*args,**kwargs)
print(“bye”)
return ret
return wrapper
def say_yo(func):
def wrapper(*args,**kwargs):
print(“yo”)
return func(*args,**kwargs)
return wrapper
@say_hi
@say_yo
def func():
print(“Rock&Roll")
func()
14.请简述functools.wraper的作用
15.给出下列代码的输出
def test():
try:
raise ValueError('something wrong')
except ValueError as e:
print('error,occurred')
return
finally:
print('Done')
test() #error,occurred Done
16,给出下面代码输出:
class Singleton:
_instance=None
def __new__(cls,*args, **kwargs):
print('New')
if cls._instance is None:
print('repeat')
cls._instance=super().__new__(cls,*args, **kwargs)
return cls._instance
def __init__(self):
print('Initialize')
self.prop=None
s1=Singleton()
s2=Singleton()
#New
#repeat
#Initialize
#New
#Initialize