测试工程师面试题二

163 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第25天,点击查看活动详情

1、列出python中可变数据类型和不可变数据类型,并简述原理

不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型

可变数据类型:当该数据类型的对对你哥变量的值发生了改变,那么它对应的内存地址不会发生改变,对于这种数据类型,就称可变数据类型。

总结“:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

不可变数据类型包含:整型、字符、元组 可以变数据类型包含:列表,字典、集合

2、常用的Python标准都有哪些?

标准库:os操作系统、time时间、random 随机、 pymysql 连接数据库、threading 线程、multiprocessing 进程、queue 队列。

第三方库:diango和flask、requests、virtualenv、selenium、acrapy、xadmin、celery、re、hashlib、md5.

常用的科学计算库: Numpy、Scipy、Pandas

3、列表与元组的区别是什么

元组是不可变的 不能修改,不可增加也不能删除 列表时可变的 可以增加, 也可以把已有的对象删除

4、当元组只有一个对象的时候,需要注意什么?

当元组中只有一个元素时,需要在元素后添加逗号

tup1 = (1,)
tup2 =(1)
print(type(tup1))
print(type(tup2))

此时运行结果为<class 'tuple'> <class 'int'>,tup2没有添加,表示就一个数字,int型。

5、怎么理解函数的动态参数

不确定参数类型的调用,仅输出对应值

*args 将所有的实参的位置参数聚合到一个元组,并将这个元组赋值给args ** kwargs 将多有的关键字实参作为字典的键值对聚合到一个字典,并赋值给kwargs

def func(*args,**kwargs):
    print(args)
    print("args的类型为:",type(args))
    print(kwargs)
    print("kwargs的类型为:",type(kwargs))

如果形式参数为空

func()

此时运行结果为() args的类型为: <class 'tuple'> {} kwargs的类型为: <class 'dict'> 表示args和kwargs都默认为空,类型args为元组,kwargs为字典

如果参数为列表类型

func(["test",123])

此时运行结果为(['test', 123],) args的类型为: <class 'tuple'> {}kwargs的类型为: <class 'dict'> 此时相当于只传了一个列表,默认我args,相当于是一个元组 ,kwargs默认为空,是一个空的字典

如果参数为字典类型

func(name="admin",age=18)

此时运行结果为() args的类型为: <class 'tuple'> {'name': 'admin', 'age': 18} kwargs的类型为: <class 'dict'> ,此时args默认为空,相当于是一个空的tuple,kwargs是一个字典类型,有相应的字典的键对值。