首页 > 编程语言 >Python八股文总结

Python八股文总结

时间:2024-09-23 14:23:35浏览次数:3  
标签:总结 八股文 函数 Python 作用域 元素 对象 复制 拷贝

一. Python基本数据结构有哪四种?区别是什么?

列表(List)
元组(Tuple)
字典(Dictionary)
集合(Set)

区别主要在于它们的可变性(是否可以修改)、有序性和是否允许重复元素。

二. Pyhton数据类型

1.整数(int): 用于表示整数值,通常占用4个字节或8个字节,取决于系统是32位还是64位,如 x = 5。

2.浮点数(float): 用于表示带有小数点的数字,通常占用8个字节,即64位,如 y = 3.14。

3.字符串(str): 用于表示文本,可以使用单引号或双引号,字符串长度乘以每个字符的字节数。Unicode 字符串通常占用2个字节或4个字节,具体取决于编码方式(UTF-16或UTF-32),如 text = 'Hello, World!'。

4.布尔值(bool): 用于表示真或假,只有两个取值:True 或 False,通常占用1个字节,但在某些情况下可能更多。

5.列表(list): 有序的可变序列,可以包含不同类型的元素,取决于列表中元素的数量和类型。一个列表中的元素占用的字节数相加。如 my_list = [1, 'apple', 3.14]。

6.元组(tuple): 有序的不可变序列,类似于列表,但不能修改,类似于列表,取决于元组中元素的数量和类型。如 my_tuple = (1, 'banana', 2.71)。

7.集合(set): 无序的、唯一的元素集合,用于执行集合操作,占用的字节数与元素数量和类型有关。如 my_set = {1, 2, 3}。

8.字典(dictionary): 无序的键值对集合,用于存储和检索数据,占用的字节数与键值对的数量和类型有关。如 my_dict = {'name': 'John', 'age': 25}。

9.字节串(bytes): 用于表示二进制数据,字节的数量即为占用的字节数。如 b = b'hello'。

10.字节数组(bytearray): 可变的字节串,允许修改元素,与字节串类似,占用的字节数等于元素的数量。如 ba = bytearray(b'hello')。

11.NoneType: 表示空或不存在的数据,通常用于初始化变量。通常占用很小的固定字节数,常常是1个字节。

需要注意的是:字典类型中的键是不可重复的。字典是一种无序的键-值对集合,每个键必须是唯一的。

如果尝试向字典中添加具有相同键的多个值,后续的值会覆盖之前的值,因为字典中的键必须保持唯一性。示例如下:


输出:


在上面的例子中,最终字典中的键 'name' 只保留了最后一次出现的值 'Alice'。这强调了字典中键的不可重复性。如果你需要存储多个具有相同键的值,可以考虑使用列表或其他数据结构来保存这些值。

三. Break和Continuous区别

break 用于终止循环,跳出循环体。
continue 用于跳过循环体中的剩余代码,直接进行下一轮循环。

四. return和yield的区别,以及return的作用

return 用于从函数中返回一个值,并终止函数的执行。
yield 用于生成一个迭代器,函数执行暂停并保存状态,可以在下一次调用中继续执行。函数的状态在多次调用中保持。


五. Python深拷贝和浅拷贝区别

浅拷贝只复制对象的第一层,深拷贝复制对象的所有层。修改原始对象中的嵌套对象不会影响浅拷贝,但会影响深拷贝。

浅拷贝和深拷贝是关于复制对象的两个概念,它们的主要区别在于复制的程度。

浅拷贝(Shallow Copy):
定义: 浅拷贝创建一个新对象,然后将原对象中的元素(对象的引用)复制到新对象中。新对象中的元素仍然是原对象中元素的引用。

复制层次: 只复制了对象的一层。如果对象中包含引用类型的元素(例如列表或字典),则新对象中的引用仍然指向原对象中的相同元素。

使用方法: 使用 copy() 函数或切片操作 [:] 来进行浅拷贝。


深拷贝(Deep Copy):
定义: 深拷贝创建一个新对象,并递归地复制原对象中的所有元素,包括嵌套的元素。新对象中的元素是原对象中元素的副本,而不是引用。

复制层次: 复制了对象的所有层次结构,包括嵌套的对象。

使用方法: 使用 copy.deepcopy() 函数来进行深拷贝。


 浅拷贝对于不可变对象(如整数、字符串)来说,效果和深拷贝相同,因为不可变对象没有嵌套的引用关系。
深拷贝可能会更耗费资源,因为它需要递归地复制整个对象结构,而且可能导致循环引用的问题。
如果原对象中包含自定义对象,需要确保自定义对象支持拷贝操作,即实现 __copy__() 和 __deepcopy__() 方法。

关于拷贝的地址问题:
在浅拷贝和深拷贝中,都会复制对象的地址,但它们对于嵌套的对象(即对象内部包含其他对象)的处理方式不同。

浅拷贝:

复制对象的一层结构,但对于嵌套的对象,只复制其引用,而不是创建副本。因此,浅拷贝中的元素仍然指向原始对象中相同的地址。



 
深拷贝:
递归地复制对象的所有层次结构,包括嵌套的对象。深拷贝中的元素是原始对象中元素的副本,而不是引用。



 

总结起来,浅拷贝和深拷贝都是复制对象的地址,但深拷贝会递归地复制整个对象结构,包括嵌套的对象,使得复制后的对象完全独立于原始对象。 

六. range和xrange的区别

range 返回一个列表,xrange 返回一个生成器。在 Python 3 中,xrange 被移除,range 本身就是一个生成器。

七. is和==的区别

== 用于比较对象的值是否相等。
.is 用于比较对象的身份标识是否相等(是否是同一个对象)。

八. 什么是lambda函数

lambda 函数是一种匿名函数,通常用于简化代码,特别是在函数参数中传递简单的功能。

九. 字符串拆分方法有哪些

split()、splitlines()、partition() 等。

十. 单引号、双引号、三引号区别

单引号和双引号在 Python 中用于表示字符串,没有实质性区别。
三引号用于表示多行字符串(能够实现多行字符串的输入),也可以表示多行注释。

十一. python传参时需要注意什么

Python 中函数参数可以是位置参数、关键字参数、默认参数和可变参数。注意参数的顺序和类型匹配。

十二. 装饰器

装饰器是一种用于修改函数或方法行为的高级技术。装饰器可以在不改变函数代码和调用方式的情况下给函数添加新的功能。本质上是一个嵌套函数,接收被装饰的函数(func)作为参数,并返回一个包装过的函数,以实现不影响函数的情况下添加新的功能。抽离出大量与函数主体功能无关的代码,增加一个函数的重用性。
应用场景:性能测试(统计程序运行时间)、插入日志、权限校验

十三. 函数或变量的作用域

作用域是指在程序中定义变量或函数的区域,它决定了在何处可以访问变量或函数。作用域分为全局作用域和局部作用域。

局部作用域(Local Scope): 定义在函数内部的变量具有局部作用域。这意味着这些变量只能在函数内部访问,对于函数外部是不可见的。


全局作用域(Global Scope): 在函数外部定义的变量拥有全局作用域,可以在整个程序中被访问。全局变量可以在函数内部进行访问和修改,但在函数内如果出现同名的局部变量,它将会覆盖全局变量。

在 Python 中,还有一个概念叫做嵌套作用域(Enclosing Scope),它指的是在函数内部包含其他函数的情况。在嵌套作用域中,内部函数可以访问外部函数的变量,但不能修改它们,除非使用 nonlocal 关键字。


 十四. 解释型和编译型语言的区别

解释型语言在运行时逐行解释源代码。
编译型语言在运行之前先将源代码转换为机器代码。
十五. inti和new的区别
__init__ 初始化对象的属性。
__new__ 创建对象,并返回对象实例。


十六. 常用的模块

math、datetime、random、os、sys 等。

十七. python的list和numpy.array(数组)的区别

list 是 Python 内置的通用序列类型,不支持数学运算。
numpy.array 是数学运算库 NumPy 提供的数组类型,支持高效的数学运算。


十八. 类中self的概念及其三种应用

self 是指向对象本身的引用,用于在类中引用对象的属性和方法。
应用包括在 __init__ 方法中初始化对象的属性,访问类的属性和方法,以及在类的方法中调用其他方法。


十九. python的面向对象特征

封装、继承、多态。 Python 是一门多范式编程语言,支持面向对象编程、面向过程编程和函数式编程。

标签:总结,八股文,函数,Python,作用域,元素,对象,复制,拷贝
From: https://blog.csdn.net/Python_shusu/article/details/142415671

相关文章

  • Python中的全局变量
    在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它们,以及如何在函数中修改全局变量的值。全局变量:python的代码结构一般按照shebang、import模块、全局变量、函数定义、执行代码的顺序进行编写,可以看出全局变量的定义处于比较靠......
  • Python中Sha加密算法
    '''DES:Python3.x中的加密在python3的标准库中,已经移除了md5,而关于hash加密算法都放在hashlib这个标准库中,hashlib模块就包括了SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。通常我们的加密,都是对二进制编码的格式进行加密的;而在Python中,使用的是Bytes......
  • python编码探测-优化版
    importosimportchardetfromtkinterimportfiledialogfromconcurrent.futuresimportThreadPoolExecutor#获取文件的编码defget_all_chardet(filename,max_bytes=1048576):#默认读取1MBtry:withopen(file=filename,mode='rb')asf3:#使用wit......
  • locust+python高并发压测总结
    locust+python全链路压测总结1.什么是接口?为系统提供数据服务的叫做接口(Interface)locust安装pipinstalllocust安装完成后:locust-h查看是否安装成功2.如何编写locust脚本?编写locust脚本主要分为以下几个步骤:导入Locust类定义用户行为定义任务运行脚本2.1导入Lo......
  • 2024最新金三银四面经:166位粉丝面试大厂经验总结(附面试真题)
    大厂需要什么样的人?==========大厂对于非高P职位,面试标准其实很简单能干活Java基础要好最好熟悉些分布式框架相信这些标准大部分公司都差不多前段时间,帮一些粉丝进行了模拟面试,工作经验在3到5年间。不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进......
  • D15【python接口自动化学习】-python基础之内置数据类型
    day15字典的常见操作(上)学习日期:20240922学习目标:内置数据类型--24常见常新:字典的常见操作(上)学习笔记:字典的内置函数访问字典的内容#访问字典的所有元素mail_list={'tom':'[email protected]','jerry':'[email protected]','john':'[email protected]'}print(mail_li......
  • Python NumPy处理数组的基本用法代码示例
    NumPy是一个用于处理数组(向量和矩阵)以及进行数值运算的Python库。下面是一些简单的例子来展示如何使用NumP:示例1:创建数组importnumpyasnpa=np.array([1,2,3])#创建一个一维数组b=np.array([[1,2,3],[4,5,6]])#创建一个二维数组print(a)print(b)示......
  • python面试题
    python是什么?Python是一种开放原始码、直译式、可携式、面向对象的程序语言,具有模块、多线程、异常处理以及自动内存管理功能。广泛应用包括Web开发(如Django和Flask框架)、数据科学(如Pandas和NumPy库)、机器学习(如TensorFlow和PyTorch框架)、自动化脚本、科学计算等。算法是什么?......
  • 9.18每日总结
    今日学习时间一小时,echarts成功连接到了后天数据库,完成了实时动态表格,但是没并灭有使用ajax的方法,而是通过获取数据,之后进行字符串拼接的方式完成了获取数据库数据<%List<User>userList=(List<User>)session.getAttribute("u");StringBuilderuserIds=newStri......
  • Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码
    分析师:SikunChen在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估情报学期刊的质量和影响力对于学术研究和信息传播意义重大。本研究旨在通过多种方法对......