Python自动化测试常见面试题。看会进大厂不是问题!!!

在这里插入图片描述

一、_ init _ _ 和 _ _ new _ _是什么?


1.1、概述

  • 在python的面向对象中,利用new方法创建对象,然后把这个创建的对象传递到init函数中,以第一个参数进

1.2、详细描述

__new__ 

所有的类上都有一个new方法

  • 调用时机: 新建对象的时候自动调用(init之前),同时会自动传入类cls参数
  • 作用: 改变对象空间的创建过程
class Person(object):

def __new__(cls):

print("__new__方法被调用")

# 必须返回创建的对象

# print(cls)

#return object.__new__(cls) #父类上的__new__方法能够实现内存空间的开辟

return super().__new__(cls) #父类上的__new__方法能够实现内存空间的开辟

def __init__(self):

print("__init__方法被调用")

# 创建对象

zhangsan = Person()

__init___

定义在类中, 名字固定 init。

执行时机: 实例化对象的时候自动调用执行

作用: 一般会在初始化方法中 为对象添加(绑定)属性

class Student(object):

# 属性

# 方法

## 自己定义一个初始化方法

def __init__(self,_name,_age):

# 输出

print("我自动被调用")

# 添加属性

# self.name = "张三"

# self.age = 26

self.name = _name

self.age = _age

def learn(self):

print("努力学习,天天向上")

# 实例化对象

stu1 = Student(_age=28,_name="李四")

1.3、应用场景

所谓单例就是一个类从始至终只能产生一个实例。

class Singleton(object):

__instance = None #私有类属性,保存创建的对象空间

__isInit = False # 是否已经初始化

def __new__(cls, *args, **kwargs):

# 实现自己对象的创建过程

if not cls.__instance:

# 没有就创建

cls.__instance = super().__new__(cls)

# 返回

return cls.__instance

else:

# 有直接返回

return cls.__instance

def __init__(self,name,age):

if not self.__isInit: #没有初始化

# 初始化

self.name = name

self.age = age

# 改变

self.__isInit = True

else:

#

pass

二、什么是pass,什么是lambda函数


2.1、概述

  • lambda 创建匿名函数的语法。
  • pass 空语句。

2.2、详细描述

  • 1、pass的作用

    不做任何事情,一般用做占位语句,为了保证程序的完整性。

  • 2、lambda

    lambda只是一个表达式,函数体比def简单很多。

    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

# 可写函数说明

sum = lambda arg1, arg2: arg1 + arg2;

# 调用sum函数

print "相加后的值为 : ", sum( 10, 20 )

print "相加后的值为 : ", sum( 20, 20 )

2.3、应用场景

lambda创建的匿名函数一般在 排序,map,reduce,filter这些高阶函数里,可以一行写完,不过这个也要看情况,过多使用匿名函 数,在团队代码阅读上,可能会有麻烦。

>>>def square(x) : # 计算平方数

... return x ** 2

...

>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方

>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数

[1, 4, 9, 16, 25]

# 提供了两个列表,对相同位置的列表数据进行相加

>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

[3, 7, 11, 15, 19]

# 过滤出列表中的所有奇数:

newlist = filter(lambda x:x % 2 == 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print(newlist)

三、is和==有什么区别?

3.1、概述

is 比较 的是两个实例对象是不是同一个对象,也就是说这两个对象的地址,通过id()函数可以获取,是不是相同。

== 比较的是两个实例对象的值是否相等,比较的是内存中存放的内容,可以不是同一个对象,只要内容一样就可以了。

3.2、详细描述

x = [1, 2, 3]

y = x

z = [1, 2, 3]

print(x == y)

print(x is y)

print(x == z)

print(x is z)

结果:

True

True

True

False

3.3、应用场景

is常用的地方是: 和None值进行比较 a is None 或者 a is not None

None 在 Python 语言中是一个单例对象,如果你要判断某个变量是否为 None 时,记得使用 is而不是 ==,因为只有 is才能在严格意义上表示某个变量是否是 None。另外,喜欢软件测试的朋友也可以加群(785128166)群内有测试资源,面试题,视频教学,PDF文档,还有技术大咖答疑解惑。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亐㔓焼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值