当前位置: 首页 > news >正文

Python面经

文章目录

  • Python
    • 基本概念
      • 1. Python是**解释型**语言还是**编译型**语言
      • 2. Python是**面向对象**语言还是面向过程语言
      • 3. Python基本数据类型
      • 4.append和 extend区别
      • 5.del、pop和remove区别
      • 6. sort和sorted区别
      • 介绍一下Python 中的字符串编码
      • is 和 == 的区别
      • *arg 和**kwarg作用
      • 浅拷贝(Shallow Copy)&深拷贝(Deep Copy)
      • lambda

Python

持续更新中~

基本概念

1. Python是解释型语言还是编译型语言

解释型解释型是边编译边执行。编译型语言是把源程序全部编译成二进制的可运行程序后再运行,如C/C++ 。

注:java程序不是直接编译成机器语言,而是编译成字节码,然后用解释方式执行字节码。

2. Python是面向对象语言还是面向过程语言

面向对象。面向对象编程(OOP)的特点包括:

  • 封装:将数据和操作这些数据的方法组合在一起。
  • 继承:允许新创建的类(子类)继承现有类(父类)的属性和方法。
  • 多态:允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。

面向过程编程的特点包括:

  • 将程序分解为一系列的过程或函数,每个过程或函数执行特定的任务。
  • 强调过程和函数的调用,而不是对象和类。

3. Python基本数据类型

  • Numbers(数字):3.7以后存储字节数会根据数字大小变化(28+48(num/230))
  • List(列表):有序集合。多维列表本质就是列表里面叠列表
  • Tuple(元组):有序集合。元组是只读的列表
  • Dictionary(字典):无序集合,由键值对(key-value)组成。
  • 集合(set):是一组 key 的集合,每个元素都是唯一不重复无序的。
  • a=(4),a的类型为整数

4.append和 extend区别

  • append()方法用于将一个对象添加到列表的末尾。当使用append()方法添加一个列表到另一个列表时,实际上是将整个列表作为一个单独的元素添加到原列表中。

  • extend()方法用于将一个可迭代对象(如列表、元组、字符串等)的所有元素添加到列表的末尾。使用extend()方法添加一个列表到另一个列表时,实际上是将这个列表中的所有元素逐个添加到原列表中。

my_list = [1, 2, 3]
my_list.extend([4, 5])  # 结果: [1, 2, 3, 4, 5]
my_list.append([5, 6])  # 结果: [1, 2, 3, 4, [5, 6]]

5.del、pop和remove区别

  • del:根据下标进行删除
  • pop:根据下标进行删除并返回删除值,默认删除最后一个元素
  • remove:根据元素的值进行删除
my_list = [1, 2, 3, 4, 5]
del my_list[2]  # my_list: [1, 2, 4, 5]
a=my_list.pop(0)  # my_list: [2, 4, 5], a: 0
my_list.remove(4)  # my_list: [2, 5]

6. sort和sorted区别

  • sorted()是一个内置函数,不会修改原始的序列,而是返回一个新的排序后的列表。不会修改原始的序列,而是返回一个新的排序后的列表。
  • sort()是列表(list)的一个方法,它直接修改原列表,按照指定的顺序对列表中的元素进行排序。
my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list)  # 输出: [1, 1, 3, 4, 5]
sorted_list = sorted(my_list, reverse=True)  # 设置reverse为True进行降序排序
print(my_list)  # 输出: [1, 1, 3, 4, 5]
print(sorted_list)  # 输出: [5, 4, 3, 1, 1]

reverse和reversed同理

my_list = [1, 2, 3, 4, 5]
reversed_iterator = reversed(my_list)
print(list(reversed_iterator))  # 输出: [5, 4, 3, 2, 1]
print(my_list)  # 原始列表未被修改: [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # 输出: [5, 4, 3, 2, 1]

介绍一下Python 中的字符串编码

  1. ASCII (American Standard Code for Information Interchange):

    • 最早的字符编码标准,使用7位二进制数表示128个字符,包括英文大小写字母、数字和一些特殊符号。
    • 由于只支持英文字符,因此不适合表示其他语言。
  2. Unicode:

    • 为了解决ASCII编码的局限性,Unicode提供了一种可以表示世界上几乎所有文字的字符集。
  3. UTF-8 (8-bit Unicode Transformation Format):

    • 是Unicode的一种实现方式,可以根据字符的不同使用不同长度(1-4)的字节来表示一个字符。

    • UTF-8最大的特点是它对ASCII编码是兼容的,即ASCII字符在UTF-8中用一个字节表示,与ASCII编码相同。

  • str.encode(): 将字符串编码为指定格式的字节串。
  • bytes.decode(): 将字节串解码为字符串。

is 和 == 的区别

==是比较操作符,只是判断对象的(value)是否一致,而 is 则判断的是对象之间的身份(内存地址)是否一致。

对象的身份,可以通过 id() 方法来查看。

*arg 和**kwarg作用

  • *args代表可变数量的位置参数(arguments),它允许你将不定数量的位置参数传递给函数。这些参数被组织为一个元组(tuple),在函数内部可以通过索引来访问。

  • **kwargs代表可变数量的关键字参数(keyword arguments),它允许你将不定数量的关键字参数传递给函数。这些参数被组织为一个字典(dictionary),在函数内部可以通过键来访问。

def my_function(*args, **kwargs):for arg in args:print(arg)for key, value in kwargs.items():print(f"{key}: {value}")my_function(1, 2, name="Alice", age=25)
# 输出: 1, 2, name: Alice, age: 25

浅拷贝(Shallow Copy)&深拷贝(Deep Copy)

  • 浅拷贝复制的是原始对象中包含的引用,而不是对象本身。
  • 深拷贝递归地复制了原始对象中的所有对象。这意味着深拷贝会创建原始对象的完整副本,包括所有嵌套的对象,修改原始对象不会影响深拷贝。
import copy
original_list = [[1, 2, 3], [4, 5, 6]]shallow_copied_list = copy.copy(original_list)
# 浅拷贝
original_list[0][0] = 'X'
print(shallow_copied_list)  # 输出: [['X', 2, 3], [4, 5, 6]]
# 深拷贝
deep_copied_list = copy.deepcopy(original_list)
original_list[0][0] = 'X'
print(deep_copied_list)  # 输出: [[1, 2, 3], [4, 5, 6]]

lambda

lambda是一个用于创建匿名函数的关键字。匿名函数是一种没有名称的函数,它们通常用于需要函数对象的地方,但又不想去定义一个完整的函数。

people = [("Alice", 30), ("Bob", 25), ("Charlie", 35)]
sorted_people = sorted(people, key=lambda person: person[1])
print(sorted_people)  # 输出: [('Bob', 25), ('Alice', 30), ('Charlie', 35)]def num():return [lambda x:i*x for i in range(4)]
[m(1) for m in num()]  # 输出: [3, 3, 3, 3]

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException
  • .Net Core 微服务之Consul(二)-集群搭建
  • Vue 接口用FormData() 提交数据
  • 如何使用 GPT?
  • 基于 jenkins 部署接口自动化测试项目!
  • 文件上传接口
  • Hive的基本操作(查询)
  • 盘古信息MOM系统:赋能企业打造高效数字化车间的关键
  • 【绘唐阿祖】Ai小说推文一键生成工具功能预览极速版
  • AI智能名片在Web 3.0技术栈中的应用与前景研究
  • FastAPI 学习之路(五十)WebSockets(六)聊天室完善
  • 近源渗透简介
  • 5. 基于Embedding实现超越elasticsearch高级搜索
  • python数据可视化(6)——绘制散点图
  • 【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)
  • python3.6+scrapy+mysql 爬虫实战
  • [NodeJS] 关于Buffer
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Angular 2 DI - IoC DI - 1
  • Centos6.8 使用rpm安装mysql5.7
  • ES10 特性的完整指南
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript的使用你知道几种?(上)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java超时控制的实现
  • java多线程
  • Java反射-动态类加载和重新加载
  • Java小白进阶笔记(3)-初级面向对象
  • js面向对象
  • Promise面试题2实现异步串行执行
  • SOFAMosn配置模型
  • SwizzleMethod 黑魔法
  • Zepto.js源码学习之二
  • 驱动程序原理
  • 山寨一个 Promise
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • MyCAT水平分库
  • puppet连载22:define用法
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 如何正确理解,内页权重高于首页?
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)(1.9) MSP (version 4.2)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (WSI分类)WSI分类文献小综述 2024
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (南京观海微电子)——COF介绍
  • (七)Flink Watermark
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级