IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python 常见面试题 -> 正文阅读

[Python知识库]Python 常见面试题

1.Python 中的列表和元组有什么区别?

列表 list 是可变的,即可以编辑,同时运行比元组慢
元组 tuple 是不可变(元组是无法编辑的列表)

2.Python 的主要功能是什么?
  • Python 是一种解释型语言。这意味着,与C及其变体等语言不同,Python 在运行之前不需要进行编译。其他解释语言包括PHP。
  • Python 是动态类型的,这意味着在声明变量或类似的东西时无需声明变量的类型。
  • Python 非常适合面向对象的编程,因为它允许定义类以及组成和继承。但Python 没有访问说明(如C ++的 public,private)。
  • 在 Python 中,函数是一流的对象。这意味着可以将它们分配给变量,从其他函数返回并传递给函数。也是一流的对象
  • 编写 Python 代码很快,但是运行它通常比编译语言要慢。幸运的是,Python 允许包含基于 C 的扩展,因此可以消除瓶颈,并且经常可以解决瓶颈。比如numpy,因为很多数量的运算它实际上并不做的Python
  • Python 在许多领域都有使用-Web 应用程序,自动化,科学建模,大数据应用程序等等。它也经常用作“胶水”代码,以使其他语言和组件发挥出色。
3.python 是什么类型的语言?编程还是脚本?

Python 是解释型语言,可以用它编写脚本,但从一般意义上讲,它被视为通用编程语言。

4.什么是 pep 8?

PEP 代表 Python 增强建议。这是一组规则,用于指定如何格式化 Python 代码以实现最大的可读性。

5.如何在 Python 中管理内存?
  • python有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它,但是有了核心api后,我们可以访问一些工具。python内存管理器控制内存分配
  • 内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间

引申内容

程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。

6.Python 中的命名空间是什么?

命名空间是用于确保名称唯一以避免命名冲突的命名系统

7.什么是 PYTHONPATH?

这是一个环境变量,在导入模块时使用,每当导入模块时,都会查找PYTHONPATH以检查各个目录中是否存在导入的模块,解释器使用它来确定要加载哪个模块

8.什么是 python 模块?命名 Python 中一些常用的内置模块?

Python 模块是包含 Python 代码的文件。此代码可以是函数类或变量。Python 模块是包含可执行代码的.py 文件。
一些常用的内置模块包括:sys、math、random、datatime、JSON。

9.Python 中的局部变量和全局变量是什么?

全局变量:在函数外部或全局空间中声明的变量称为全局变量。程序中的任何函数都可以访问这些变量。
局部变量:在函数内部声明的任何变量都称为局部变量。此变量存在于局部空间而不是全局空间中。

10.python 是否区分大小写?

区分大小写

11.什么是 Python 中的类型转换?

类型转换是指将一种数据类型转换为另一种数据类型。

int() – 将任何数据类型转换为整数类型
float() – 将任何数据类型转换为 float 类型
ord() – 将单个字符转换为ASCII码
hex() – 将整数转换为十六进制
oct() – 将整数转换为八进制
tuple()– 此函数用于转换为元组。
set()– 此函数在转换为 set 后返回类型。
list()– 此函数用于将任何数据类型转换为列表类型
dict()– 此函数用于将顺序(键,值)的元组转换为字典。
str()– 用于将整数转换为字符串。
复数(实数,imag)– 此函数将实数转换为复数(实数,imag)。

12.python 是否需要缩进?

缩进对于 Python 是必需的。它指定一个代码块。循环,类,函数等中的所有代码都在缩进块中指定。通常使用四个空格字符来完成。如果您的代码没有必要缩进,那么它将无法正确执行,并且也会引发错误。

13.Python 数组和列表有什么区别?

数组和列表的存储方式相同。但是,数组只能容纳一个数据类型元素,而列表可以容纳任何数据类型元素。

14.Python 中的函数是什么?

函数是代码块,仅在调用时才执行。要定义 Python 函数,可以使用 def 关键字。

15.什么是__init__?

__init__是 Python 中的方法或构造函数。创建类的新对象/实例时,将自动调用此方法以分配内存。所有类都具有 __init__方法。

16.什么是 lambda 函数?

匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

a = lambda x,y:(x+y)
print(a(4,5))
# 输出为 9 
17.Python 中的 self 是什么?

Self 是类的实例或对象。在 Python 中,这明确包含为第一个参数。但是,在 Java 中不是这种情况,它是可选的。它有助于区分具有局部变量的类的方法和属性。
init 方法中的 self 变量引用新创建的对象,而其他方法中的 self 变量引用其方法被调用的对象。

18.[::-1]是做什么的?

用于反转数组或列表的顺序

a = [1,2,3]
a[::-1]
# 输出 [3,2,1]
19.如何在 Python 中将列表项随机化?

使用random.shuffle()

from random import shuffle
a = ['i','love','china']
shuffle(a)
print(a)
# 输出 ['china', 'love', 'i']
20.什么是 python 迭代器?

迭代器时可以遍历或迭代的对象

21.python 中的生成器是什么?

使用了 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器

22.您将如何大写字符串的第一个字母?

caplitalize()

23.您如何将字符串转换为全部小写?

lower()

24.如何在 Python 中生成随机数?
import random
random.random()

random.random()方法返回【0,1)范围内的浮点数,其他随机方法

  • randrange(a,b):选择一个整数并定义[a,b)之间的范围。它通过从指定范围内随机选择元素来返回元素。它不会建立范围对象。
  • Uniform(a,b):选择一个在[a,b)范围内定义的浮点数。Iyt 返回该浮点数
  • normalvariate(mean,sdev):用于正态分布,其中mu 是平均值,而 sdev 是用于标准差的 sigma。
25.range 和 xrange 有什么区别?

就功能而言,在大多数情况下,xrange 和 range 完全相同。它们都提供了一种生成整数列表供您使用的方法,但是您可以随意使用。唯一的区别是range 返回一个 Python 列表对象,而 x range 生成器,但是Python3中xrange已经不使用了

26.什么是酸洗?

pickle模块实现了一个基本但强大的算法,用于序列化和反序列化Python对象结构。
Pickling - 是将Python对象层次结构转换为字节流的过程,而 Unpickling - 是反向操作,从而将字节流转换回对象层次结构。
酸洗(和去除斑点)也称为序列化,编组或展平。

27.每当Python 退出时,为什么不取消分配所有内存?
  • 循环引用其它对象或引用自全局命名空间的对象的模块,在 Python 退出时并非完全释放。另外,也不会释放 C 库保留的内存部分
  • 退出时,由于具有自己有效的清除机制,Python 会尝试取消分配/销毁所有其他对象。
28.Python 中的字典是什么?

Python 中的内置数据类型称为字典。它定义了键和值之间的一对一关系。字典包含一对键及其对应的值。字典由键索引。

29.这是什么意思:* args,** kwargs?为什么我们要使用它?

当我们不确定要向函数传递多少个参数时,或者如果要将存储的参数列表或元组传递给函数时,可以使用* args。** kwargs 在我们不知道将多少个关键字参数传递给一个函数时使用,或者可用于将字典的值作为关键字参数传递。

*args代表位置参数,它会接收任意多个参数并把这些参数作为元祖传递给函数。
**kwargs代表的关键字参数,返回的是字典,位置参数一定要放在关键字前面

30.解释Python 中“ re”模块的 split(),sub(), subn()方法。

为了修改字符串,Python 的“ re”模块提供了 3 种方法。他们是:

  • split()– 使用正则表达式模式将给定的字符串“拆分”为列表。
  • sub()– 查找所有正则表达式模式匹配的子字符串,然后将其替换为其他字符串
  • subn()– 与 sub()类似,并且还返回新字符串以及no。更换。
31.什么是负索引,为什么要使用它们?

Python 中的序列已编入索引,并且由正数和负数组成。正数使用“ 0” 作为第一个索引,使用“ 1”作为第二个索引,过程继续进行。
负数的索引从代表序列中最后一个索引的“ -1”开始,而倒数第二个索引则是“ -2”,并且该序列像正数一样向前发展。

32.什么是 Python 包?

Python 软件包是包含多个模块的名称空间。

33. 如何用 Python 删除文件?

os.remove()

34. python 的内置类型是什么?

int,float,bool,列表,字典,字符串,内置函数等

35.Python 是否具有 OOps 概念?

Python 是一种面向对象的编程语言。这意味着可以通过创建对象模型在 python 中解决任何程序。但是,Python 既可以作为过程语言,也可以作为结构语言。

36.深层复制和浅层复制有什么区别?

创建新实例类型时,将使用浅表复制,并将其复制的值保留在新实例中。浅复制用于复制参考指针,就像复制值一样。这些引用指向原始对象,并且在类的任何成员中所做的更改也会影响其原始副本。浅拷贝允许更快地执行程序,并且取决于所使用的数据大小。
深度复制用于存储已复制的值。深层复制不会将引用指针复制到对象。它引用一个对象,并存储其他对象指向的新对象。在原始副本中所做的更改不会影响使用该对象的任何其他副本。由于为每个被调用的对象制作了某些副本,因此深层复制会使程序的执行速度变慢。

37.如何在 Python 中实现多线程?
  1. Python 有一个多线程程序包,但是如果您想使用多线程来加快代码速度,那么使用它通常不是一个好主意。
  2. Python 具有称为全局解释器锁(GIL)的构造。GIL 确保您的“线程”之一只能在任何一次执行。线程获取 GIL,做一些工作,然后将 GIL 传递到下一个线程。
  3. 这发生得非常快,因此在人眼看来,您的线程似乎是并行执行的,但实际上它们只是使用相同的 CPU 内核轮流执行。
  4. 所有这些 GIL 传递都会增加执行开销。这意味着,如果您想使代码运行得更快,那么使用线程包通常不是一个好主意。
38. 在 python 中进行编译和链接的过程是什么?

编译和链接允许正确扩展新扩展名,而不会出现任何错误,并且只有在通过编译过程时才能进行链接。如果使用动态加载,则取决于系统随附的样式。python 解释器可用于提供配置设置文件的动态加载,并将重新构建解释器。
在此所需的步骤为:

  1. 创建系统编译器支持的任何名称和任何语言的文件。例如file.c 或 file.cpp
  2. 将此文件放在正在使用的发行版的Modules /目录中。
  3. 在 Modules /目录中存在的 Setup.local 文件中添加一行。
  4. 使用垃圾邮件 file.o 运行文件
  5. 成功运行此命令后,可使用顶层目录上的make 命令来重建解释器。
  6. 如果文件被更改,则使用命令“ make Makefile”运行rebuildMakefile。
39.用一个例子解释 Python 中的继承

继承允许一个类获取另一类的所有成员(例如属性和方法)。继承提供了代码可重用性,使创建和维护应用程序变得更加容易。我们从中继承的类称为超类,而继承的类称为派生/子类。

40.python 是否支持多重继承?

多重继承意味着一个类可以从多个父类派生。与 Java 不同,Python 确实支持多重继承。

41.什么是 Python 中的多态?

多态性是指采取多种形式的能力。因此,例如,如果父类具有一个名为 ABC 的方法,那么子类也可以具有一个具有相同名称和参数的 ABC 方法。Python 允许多态。

42.您如何在 Python 中进行数据抽象?

数据抽象仅提供所需的详细信息,并从世界中隐藏实现。这可以在 Python 中通过使用接口和抽象类来实现。

43.python 是否使用访问说明符?

Python 不会剥夺对实例变量或函数的访问。Python 提出了在变量,函数或方法的名称前加上单下划线或双下划线的概念,以模仿受保护和专用访问说明符的行为。

44.如何在 Python 中创建一个空类?

空类是在其块内未定义任何代码的类。可以使用 pass 关键字创建它 。但是,您可以在类本身之外创建此类的对象。在 PYTHON 中,PASS 命令在执行时不执行任何操作。这是一个空语句。

45.object()是做什么的?

它返回一个无特征的对象,该对象是所有类的基础。而且,它不带任何参数。

46.try-except-else 的 else 部分何时执行?

在没有异常发生时执行 else 部分。

47.Python的解释器种类以及相关特点?

CPython:

当我们从Python官方网站下载并安装好Python3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。

IPython:

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示
PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结: Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立

48:通过代码实现如下转换(进制之间转换)

v = “0b1111011”
#二进制转换成十进制–>int
b = int(v,2) print(b) # 123
v2 = 18
#十进制转换成二进制—>bin
print(bin(int(v2))) # 0b10010
v3 = “011”
#八进制转换成十进制
print(int(v3)) #11
v4 = 30
#十进制转换成八进制:—> oct
print(oct(int(v4))) # 0o36
v5 = “0x12”
#十六进制转换成十进制
print(int(v5,16)) # 18
v6 = 87
#十进制转换成十六进制:—> hex
print(hex(int(v6))) # 0x57

小结:转换为十进制都用int,但要注意表明是几进制转换;
十进制转换为二进制用bin,八进制用oct,十六进制用hex

49:ascii、unicode、utf-8、gbk 区别

python2内容进行编码(默认ascii),而python3对内容进行编码的默认为utf-8。
ascii 最多只能用8位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
unicode 万国码,任何一个字符=两个字节
utf-8 万国码的升级版 一个中文字符=三个字节 英文是一个字节 欧洲的是 2个字节
gbk 国内版本 一个中文字符==2个字节 英文是一个字节 gbk 转 utf-8 需通过媒介 unicode

50:字节码和机器码的区别

什么是机器码

机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
总结:机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写 什么是字节码
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。
总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

51:is 和 == 的区别?

is 比较的是内存地址,== 比较的是值

52:列举布尔值为False的常见值?

0,“”,{},[],(),set() 0 Flask 负数 不成立的表达式 None 等

53:pass的作用

pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。

54:Python垃圾回收机制?

https://www.jianshu.com/p/1e375fb40506

55:Python的可变类型和不可变类型?

可变数据类型:列表、字典、可变集合
不可变数据类型:数字、字符串、元组、不可变集合

56:现有两个元组((‘a’),(‘b’)),((‘c’),(‘d’)),请使用python中匿名函数生成列表[{‘a’:‘c’},{‘b’:‘d’}]
l1=(('a'),('b')) l2=(('c'),('d')) 
ret=map(lambda n:{n[0]:n[1]},zip(l1,l2)) 
print(list(ret)) 
#列表表达式形式: 
l1=(('a'),('b')) l2=(('c'),('d')) 
print([{n[0]:n[1]} for n in zip(l1,l2)])

附:
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

57:列举常见的内置函数

abs: 返回数字的绝对值
map:

根据函数对指定序列做映射
map()函数接收两个参数,一个是函数,一个是可迭代对象,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
返回值:
  Python2 返回列表
  Python3 返回迭代器

def mul(x): 
	return x*x 
n=[1,2,3,4,5] 
res=list(map(mul,n)) 
print(res) #[1, 4, 9, 16, 25] 
#例子2:abs() 返回数字的绝对值 
ret = map(abs,[-1,-5,6,-7]) 
print(list(ret)) # [1, 5, 6, 7]

filter

filter()函数接收一个函数 f(函数)和一个list(可迭代对象),这个函数 f的作用是对每个元素进行判断,返回 True或 False, filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

def is_odd(x): 
	return x % 2 == 1 
v=list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17])) 
print(v) #[1, 7, 9, 17]

map与filter总结

#filter 与 map 总结
#参数: 都是一个函数名 + 可迭代对象
#返回值: 都是返回可迭代对象
#区别:
#filter 是做筛选的,结果还是原来就在可迭代对象中的项
#map 是对可迭代对象中每一项做操作的,结果不一定是原来就在可迭代对象中的项

isinstance\type

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

zip 拉链函数

#zip 拉链函数,
#将对象中对应的元素打包成一个个元组,
#然后返回由这些元组组成的列表迭代器。
#如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
print(list(zip([0,1,3],[5,6,7],[‘a’,‘b’]))) # [(0, 5, ‘a’), (1, 6, ‘b’)]

reduce

reduce() 函数
reduce() 函数会对参数序列中元素进行累积 函数将一个数据集合(链表、元组等)中的所有数据进行上述操作
注意: Python3已经将reduce() 函数从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

from functools import reduce 
def add(x,y): 
	return x + y 
print(reduce(add,[1,2,3,4,5])) # 15 
print(reduce(lambda x, y: x+y, [1,2,3,4,5])) # 15 
print(reduce(add,range(1,101))) # 5050
58:常用模块都有那些?

re模块,os模块,json模块,time模块,

59:re的match和search区别?

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.search 扫描整个字符串并返回第一个成功的匹配。

60:a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 c = [(1,),(2,),(3,) ] 的区别?

a和b一样,c为元组tuple

logging模块的作用?以及应用场景?

logging
模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统
作用:可以了解程序运行情况,是否正常
    在程序的出现故障快速定位出错地方及故障分析

61:请用代码简答实现stack

Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数

# 实现一个栈stack,后进先出
class Stack: 
	def __init__(self): 
		self.items = [] 
	def is_empty(self): # 判断是否为空 
		return self.items == [] 
	def push(self,item): # 加入元素 
		self.items.append(item) 
	def pop(self): # 弹出元素 
		return self.items.pop() 
	def peek(self): # 返回栈顶元素 
		return self.items[len(self.items)-1] 
	def size(self): # 返回栈的大小 
		return len(self.items) 
if __name__ == "__main__": 
	stack = Stack() 
	stack.push("H") 
	stack.push("E") 
	stack.push("L") 
	print(stack.size()) # 3 
	print(stack.peek()) # L 
	print(stack.pop()) # L 
	print(stack.pop()) # E 
	print(stack.pop()) # H
62:常用字符串格式化哪几种?

1.占位符%
%d 表示那个位置是整数;%f 表示浮点数;%s 表示字符串。
2.format

63:谈谈你对闭包的理解?
def foo():
    m=3 
    n=5 
    def bar(): 
    	a=4 
    	return m+n+a 
    return bar 
bar = foo() 
bar() # 12

bar在foo函数的代码块中定义。我们称bar是foo的内部函数。 在bar的局部作用域中可以直接访问foo局部作用域中定义的m、n变量。 简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。

64:装饰器

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短。

def decorator(func):
    def wrapper(*args, **kwargs):
        print('123')
        return func(*args, **kwargs)

    return wrapper

@decorator
def say_hello():
    print('同学你好')

say_hello() 
# 123   同学你好
# 相当于 say_hello = decorator(say_hello)

参考:
https://www.zhihu.com/question/26930016

65:os和sys模块的作用?

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

66:谈谈你对面向对象的理解

面对对象是一种编程思想,以类的眼光来来看待事物的一种方式。将有共同的属性和方法的事物封装到同一个类下面。

继承:将多个类的共同属性和方法封装到一个父类下面,然后在用这些类来继承这个类的属性和方法

封装:将有共同的属性和方法封装到同一个类下面

  • 第一层面:创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装
  • 第二层面:类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。

多态:Python天生是支持多态的。指的是基类的同一个方法在不同的派生类中有着不同的功能

参考
https://blog.csdn.net/weixin_30662011/article/details/98505273

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:55:36  更:2022-01-14 01:57:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:24:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码