四面阿里,已拿意向书,准备了python测开面试总结

本文介绍了Python测试开发面试中常见的知识点,包括解释型语言与编译型语言的区别,面向对象编程的特性,以及面向对象的封装、继承和多态。还提及了装饰器、类方法、静态方法、属性修饰符和深浅拷贝的概念,为面试和学习提供参考。
摘要由CSDN通过智能技术生成


本文分享给需要面试的朋友,也祝愿大家顺利拿到自己想要的offer,整理了一些python的资料,自动化测试、功能测试、接口测试以及大厂面试题等等。有需要的话: 戳这里!这里!,暗号: CSDN
在这里插入图片描述

1.解释型语言和编译型语言区别:

计算机不能直接理解高级语言,需要把高级语言翻译成机器语言。翻译的方式有两种,一种是编译,一种是解释。

编译过后,会生成计算机能够直接运行的文件。

解释性语言虽然省略了编译,每次运行都需要重新解释一遍,所以运行效率更低。

2.面向对象和面向过程的区别

面向过程:是解决问题步骤性导向,一步一步解决问题。

优点:流程化使得编程任务明确,在开发前基本考虑了实现方式和最终结果。

缺点:需要深入思考,耗费精力,代码重用性低,扩展能力差,维护起来难度比较高。

面向对象:功能性为导向,根据不同的功能来实现不同的对象。

优点:结构清晰,程序便于模块化,结构化,抽象化,更符合人类思维方式。

封装性,将事务高度抽象,从而便于流程中的行为分析,便于操作和自省。

容易扩展,代码重用率高,科技城,可覆盖。

实现简单,可有效减少程序维护工作。
在这里插入图片描述

3.面向对象行间的考察点三个基本特征:封装、继承、多态

封装:

继承:

super():

在重写父类方法时,若需要调用父类方法可用。

super(子类,self).方法名()

多态:

作用:让具有不同功能的函数可以使用相同的函数名,这样可以用一个函数名调用不同内容的函数。

特点:

1.只关心实例方法是否同名,不关心是否属于同一类。

2.对象所属的类,继承关系可有可无。

3.可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;

4.多态是调用方法的技巧,不会影响到类的内部设计。

装饰器

相当于一个嵌套函数,装饰器以函数为参数

case1

# 调用函数前打印函数名字
def log(func):
    def wrapper(*args,**kw):   
    print('call %s'%func__name__)
    return func(*args,**kw)
return wrapper
 
@log
def now():
    print('hello,world')
 
# 相当于执行了log(now)
now()
 
>>>call now
hello,world

case2

#当装饰器中需要传入参数时:
def log(text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator
 
@log('call')
def no():
    print('hello,world.')
 
if __name__=='__main__':
    no()
    print(no.__name__)  # 由于调用返回的为wraper,所以函数的名字为wraper

@classmethod修饰符

classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以调用类的属性,类的方法,实例化对象等。

class A(object):
    bar=1 #类属性
    def func1(self):
        print('')
    @classmethod
    def func2(cls):
        print('func2')
        print(cls.bar)
        cls().func1()
A.func2() # 不需要实例化

@staticmethod

返回函数的静态方法。

该方法不强制要求传递参数。

class C(object):
    @staticmethod
    def f():
        print('runoob')
C.f()  # 可以不用实例化调用
C.().f() # 也可以实例化调用

@proerty

作用:把方法变成属性的调用。

深拷贝、浅拷贝、等号赋值

深拷贝:新建一个对象,把原来的内存里的内容完全复制过来,改变复制对象,不会改变原内存的内容。

浅拷贝:两种情况

1.浅拷贝的值是不可变对象(数组、字符、元组)时,和等于复制一样,对象的id值和浅拷贝原来的值相同;

2.如果对象时可变:a.一个简单的没有嵌套的对象,复制前后相互之间不影响,
b.对象中有复杂子对象,如列表嵌套,如果改变原来的对象中复杂子对象的值,浅拷贝的值也会受影响,因为在浅拷贝时只复制了子对象的引用。
在这里插入图片描述

import copy
x = [[1,2],[2,3],4]
a = copy.copy(x)
print(a is x)   #False
print(a[0] is x[0]) # True

以上这些就是相关总结,希望能帮到大家吧~

走过路过点个赞~
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值