首页 > 编程语言 >Python 基础面试第二弹

Python 基础面试第二弹

时间:2023-08-22 22:55:57浏览次数:39  
标签:quack 函数 Python 第二 面试 对象 代码 lambda

1. 解释下Python中的面向对象,以及面向对象的三大特点:

  在Python中,面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法组织在一起,形成对象。面向对象的编程主要围绕着类(Class)

和对象(Object)展开,通过封装、继承和多态等概念,实现代码的重用性、可维护性和可扩展性。

Python中的面向对象编程和面向对象的三大特点:

  1. 封装(Encapsulation):
    封装是面向对象编程的基本特点之一,它将数据和操作数据的方法封装在一起,形成一个类。类可以看作是一个模板,描述了对象的属性(数据)和方法(操作)。通过封装,我们可以将数据和方法组织在一起,形成一个独立的实体,隐藏内部的实现细节,只暴露必要的接口供外部使用。这样可以提高代码的可维护性和安全性。

  2. 继承(Inheritance):
    继承是面向对象编程的另一个重要特点,它允许我们创建一个新的类(子类)来继承已有类的属性和方法。子类可以继承父类的属性和方法,并且可以扩展或修改它们,也可以添加新的属性和方法。通过继承,可以实现代码的重用,减少重复编写相似功能的代码,提高代码的可读性。此外,继承还能建立类之间的层次关系,形成抽象和具体的概念。

  3. 多态(Polymorphism):
    多态是面向对象编程的第三个重要特点,它允许不同的对象对同一消息做出不同的响应。在多态中,可以使用基类定义通用的接口,然后由不同的子类实现这个接口,以适应不同的需求。通过多态,可以编写出更加灵活和可扩展的代码,提高代码的可维护性和可扩展性。多态还能提高代码的可读性,因为通过统一的接口调用不同的对象,代码更加清晰简洁。

  总结起来,Python中的面向对象编程具有封装、继承和多态三大特点。封装将数据和方法封装在类中,提高代码的可维护性和安全性;继承允许创建子类继承父类的属性和方法,实现代码

的重用和扩展;多态允许不同的对象对同一消息做出不同的响应,提高代码的灵活性和可扩展性。

2. Python中的鸭子模型是什么:

  鸭子模型(Duck Typing)是一种动态类型系统的概念,它强调一个对象的适用性不是由其继承自特定的类或实现特定的接口来决定,而是由它具有的方法和属性是否满足特定的调用要求

来决定。在鸭子模型中,关注的是对象的行为,而不是对象的类型。如果一个对象具有所需的方法或属性,那么它就可以被视为满足特定要求的对象,无论它是哪个类的实例或者它的继承关系

如何。这种灵活性使得在Python中编写可复用代码变得更加简单和灵活。

具体来说,鸭子模型在Python中的应用可以通过以下示例说明:

class Duck:
    def quack(self):
        print("Quack!")

class Person:
    def quack(self):
        print("I'm quacking like a duck!")

def make_quack(obj):
    obj.quack()

duck = Duck()
person = Person()

make_quack(duck)    # 输出:Quack!
make_quack(person)  # 输出:I'm quacking like a duck!

在上面的示例中,我们定义了一个鸭子类(Duck)和一个人类(Person),它们都具有名为 quack 的方法。然后,我们定义了一个函数 make_quack,它接受一个对象作为参数,并调用对象的 quack 方法。

在调用 make_quack 函数时,我们分别传入了 duck 对象和 person 对象。尽管这两个对象属于不同的类,但由于它们都具有 quack 方法,所以都可以被传递给 make_quack 函数并成功调用。

这就是鸭子模型的核心思想:不关心对象的具体类型,只关心对象是否具有特定的方法或属性。通过这种方式,我们可以更加灵活地编写代码,实现代码的重用和扩展,而不需要严格依赖于继承关系或接口实现。

 

3. Python中是如何管理内存的,管理内存的机制是什么:

  Python的内存管理机制通过引用计数和自动垃圾回收来管理内存。引用计数记录着对象被引用的次数,当没有任何引用指向对象时,对象的内存会被释放。而自动垃圾回收则负责处理一些

特殊情况,比如循环引用,它会定期检查对象之间的引用关系,找出不再被引用的对象,并释放它们占用的内存。这两个机制共同工作,确保Python程序在运行时能够高效地利用内存,并自动

释放不再需要的内存。

 

4.  lambda函数说说使用和理解:

  在Python中,lambda函数是一种匿名函数,也称为"一次性"函数,它允许我们在需要函数的地方快速定义简单的函数,而无需使用def关键字来定义一个完整的函数。lambda函数使用简

洁的语法,并且通常用于函数式编程的场景。

lambda函数的语法如下:

lambda arguments: expression

其中,arguments是函数的参数列表,可以是零个或多个参数,用逗号分隔。expression是函数体,是一个单行的表达式,返回表达式的计算结果。

lambda函数的特点:

  • lambda函数是匿名函数,没有函数名。
  • lambda函数可以有多个参数,但只能有一个表达式。
  • lambda函数返回表达式的结果,而不需要使用return关键字。

下面是一个简单的lambda函数示例,用于计算两个数的和:

add = lambda x, y: x + y
result = add(2, 3)
print(result)  # 输出:5

在上面的示例中,我们使用lambda函数定义了一个匿名函数add,它接受两个参数 x 和 y,并返回它们的和。然后,我们调用lambda函数,并传入参数2和3,将结果赋值给result变量,并

打印结果。

 

5. Python中列表,元组,字典之间的区别:

  • 列表(List):有序的可变序列,用方括号定义 [ ],适用于存储一组有序的元素,支持增删改操作。
  • 元组(Tuple):有序的不可变序列,用圆括号定义 ( ),适用于存储不需要修改的数据,常用于函数返回多个值的情况。
  • 字典(Dictionary):无序的键值对集合,用花括号定义 { },适用于存储具有关联关系的数据,通过键快速查找对应的值

在实际应用中,可以根据以下几个方面选择使用不同的数据结构:

  • 如果需要存储一组有序的元素,并且需要频繁地对其进行增加、删除、修改和排序等操作,那么选择列表(List)是比较合适的。
  • 如果需要存储一组不需要修改的数据,并且希望占用更少的内存空间,那么选择元组(Tuple)是比较合适的。
  • 如果需要存储具有关联关系的数据,并且需要根据某个键来快速查找对应的值,那么选择字典(Dictionary)是比较合适的。

6. Python中如何将字典进行合并:

在Python中,可以使用update()方法或者字典解包的方式将两个或多个字典进行合并。

方法一:使用update()方法

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

dict1.update(dict2)
print(dict1) # 输出 {'a': 1, 'b': 2, 'c': 3, 'd': 4}

方法二:使用字典解包

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

merged_dict = {**dict1, **dict2}
print(merged_dict) # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

  

 

标签:quack,函数,Python,第二,面试,对象,代码,lambda
From: https://www.cnblogs.com/beyond-tester/p/17649881.html

相关文章

  • python:用Pandas实现笛卡尔积效果
       1importpandasaspd23456students=pd.DataFrame([[1,'Alice'],7[2,'Bob'],8[13,'John'],9[6,'Alex']],colu......
  • python截图、压缩、转base64,可以用2m压缩到100k,肉眼不失真
    1importwin32gui2importwin32ui3importwin32con4importnumpyasnp5importcv26importbase6478#通过句柄截取窗口内容9defcapture_window_by_handle(handle):10left,top,right,bottom=win32gui.GetWindowRect(handle)11width......
  • Linux运维工程师面试题(1)
    Linux运维工程师面试题(1)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1别名、内部命令、外部命令的执行顺序命令执行寻找顺序:别名>内部命令>外部命令;即先寻找是否为别名,然后再找是否......
  • IDA python使用
    一.常用函数1.defhex(str)#把字符串转换成十六进制2.defMinEA()#获取反汇编窗口中代码段的最小地址3.defMaxEA()#获取反汇编窗口中代码段的最大地址4.defScreenEA()#获取光标所在位置5.defSegEnd(str)#获取程序中某段的结束地址典型例子:print(hex(MinEA()))pri......
  • python数据分析基础《用数据讲故事》#0 引言
    0引言0.1糟糕的图表无处不在0.2我们天生不擅长用数据讲故事在学校里,我们学习了很多关于语言和数学的知识。在语言方面,我们学习如何将单词组合成句子和故事。数学方面,我们学习如何理解数字。但很少有人将这两方面结合起来:没有人教我们如何用数字讲故事。更严峻的是,很少有人......
  • Python高保真高压缩图片
    '''pipinstallnumpypipinstallopencv-python'''fromioimportBytesIOimportcv2importnumpyasnpdefpic_compress(pic_path,out_path,target_size=199,quality=90,step=5,pic_type='.jpg'):#读取图片bytes......
  • python · SQL | MySQL 配置与 python 连接数据库
    来存档一下搞sql的过程,方便以后查阅。安装与配置mysqlserver:https://blog.csdn.net/zhende_lan/article/details/129318514在同一个网页下载mysqlworkbench(数据库可视化);打开workbench,新建一些表,用来测试:https://zhuanlan.zhihu.com/p/260139380python连接sql的代......
  • 使用 Python ssh 远程登陆服务器的最佳方案
    在使用Python写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果。在shell环境中,我们是这样子做的。sshpass-p${passwd}ssh-p${port}-l${user}-oStrictHostKeyChecking=noxx.xx.xx.xx"ls-l"然后你会发现,你的输出有很多你并不......
  • Python学习日记 2023年8月22日
    importglobimportargparseimportcv2importnumpyfromtqdmimporttqdmfromitertoolsimportproductdefparsArgs():parser=argparse.ArgumentParser('拼接马赛克图片')parser.add_argument('--targetpath',type=str,default='3.jp......
  • python新手小白 初入 第一节
    建议:先基础,后入门常用功能:如何书写标题:六级标题(1~6)  1.几个警号就是代表几级标题例如##########2.ctrl+0可让标题回到普通文本状态。3.快捷键方式:ctrl+数字#数字是几就是几级标题如何书写无序标题1.*加空格 快捷键ctrl+shift+]2.连续按两下回车键退出无序标题如何......