python基础知识

1、不使用反转函数,将字符串逆序

str = "abcdefg"
str[::-1]

2、求从10到100中能被3与5整除的数和

a=[]
for i in range(10,100):if i%3 == 0 and i%5==0:a.append(i)
print(a,sum(a))

3、什么是python

一种解释性语言、动态语言、python中一切都是对象、目前在大数据/人工智能/机器学习中应用广泛

4、将两个list合并,并去除重复元素

list1 = [a,b,c,d]
list2 = [d,e,c]

s = sortrd(set(list1,list2))

5、python里面search()与match()的区别

match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配

6、用Python匹配HTML tag的时候,<.>和<.?>有什么区别

贪婪和非贪婪 *号是一个量词 量词后面加? 号表示 非贪婪,也就是尽可能少的匹配

7、什么是闭包?

简单说,闭包就是根据不同的配置信息得到不同的结果, 装饰器就是一种闭包, 闭包有效的减少了函数所需定义的参数数目。

def line_conf(a, b):  def line(x):  return a*x + b  return line  line1 = line_conf(1, 1)  
line2 = line_conf(4, 5)  
print(line1(5), line2(5))  
# (6, 25)

例子中, 如果没有闭包,我们需要每次创建直线函数的时候同时说明a,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。利用闭包,我们实际上创建了泛函。

8、C++/C/JAVA/Python之间的区别?

•python: 快速开发应用程序
•java: 健壮的大型软件
•C++: 需求效率的软件
•C: 操作系统及驱动

9、python2与python3区别

3没有long,增加了dict等数据类型,返回迭代器,3有抽象基类

10、内存管理与垃圾回收机制

Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,
通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation)以空间换时间的方法提高垃圾回收效率。

  1. 内存管理&引用计数
    python创建新对象都是在内存上开辟一个块, 每个对象只存有一份数据, 赋值和复制都是创建了新的引用, 使用的是对象和引用分离策略
    在Python中,每个对象都有存有指向该对象的引用总数,即引用计数, 如果引用计数为0, 那这个对象就会被python垃圾回收机制回收
  2. 标记-清除机制
    基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点、以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没标记的对象释放。
    同时为了保证效率, Python只会在垃圾达到一定阈值时,垃圾回收才会启动。
  3. 分代回收策略
    这一策略的基本假设是,存活时间越久的对象,越不可能在后面的程序中变成垃圾。Python默认定义了三代对象集合,索引数越大,对象存活时间越长。

11、动态语言和静态语言的区别

动态语言:在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化
例如:一个类中只定义了一个对象的名字和性别, 可以动态为其加入年龄属性
静态语言:在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量前必须声明数据类型
强类型语言是一旦变量的类型被确定,就不能转化的语言。
弱类型语言则反之,一个变量的类型是由其应用上下文确定的。

12、字典推导式

d={key:value for (key,value) in iterable}

13、Python中单下划线和双下划线

__foo__ :一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突。
__foo: 一种约定,用来指定变量私有,程序员用来指定私有变量的一种方式
__foo:这个有真正的意义:解析器用__classname、__foo来代替这个名字,以区别和其他类相同的命名。

14、迭代器

访问集合元素的一种方式,从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只往前不会后退
不像列表是把所有元素一次性加载到内存,迭代器是以一种延迟计算的方式返回元素。不要求事先准备好所有的元素,迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或 者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合

迭代器有两个基本的方法 next 方法:返回迭代器的下一个元素 __ 方法:返回迭代器对象本身

15、生成器

语法上和函数类似:生成器函数和常规函数几乎是一样的。它们都是使用 def 语句
进行定义,差别在于,生成器使用 yield 语句返回一个值,而常规函数使用 return
语句返回一个值(只要一个函数内出现了 yield,那它就是一个生成器函数,执行
这个函数就得到一个生成器)

自动实现迭代器协议:对于生成器,Python 会自动实现迭代器协议,以便应用到
迭代背景中(如for 循环,sum 函数)。由于生成器自动实现了迭代器协议,所以,
我们可以调用它的 next 方法,并且,在没有值可以返回的时候,生成器自动产生
StopIteration 异常

状态挂起:生成器使用 yield 语句返回一个值。yield 语句挂起该生成器函数的状
态,保留足够的信息,以便之后从它离开的地方继续执行
生成器的唯一注意事项就是:生成器只能遍历一次。

16、python 语法糖

语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法,
语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读
例子:

  1. c = [b,a][a>b] 取两个中的最大值
根据条件 a > b 来确定选择的元素。如果条件成立(即 a 大于 b),则选择索引为 1 的元素 a;
如果条件不成立(即 a 小于等于 b),则选择索引为 0 的元素 b。
  1. lambda、filter、map、reduce 函数
lambda 函数:匿名函数,也称为"一次性函数"
语法:lambda 参数列表: 表达式例子:
add = lambda x, y: x + y
print(add(2, 3))
filter 函数: 用于过滤序列中的元素,根据指定的条件筛选出满足条件的元素。它接受两个参数:一个是函数,另一个是序列。函数用来判断序列中的元素是否满足条件,filter 函数返回一个迭代器,包含满足条件的元素。
语法:filter(函数,序列)
举例:筛选出列表中偶数
numbers = [1,2,3,4,5,6]
a = list(filter(lambda x:x%2==0,numbers))
print(a)
map 函数: 用于对序列中的每个元素应用相同的操作或函数,并返回一个新的列表,该列表包含了应用操作或函数后的结果。
map 函数将序列中的每个元素依次应用给定的函数,并将结果收集到一个新的列表中
语法:map(函数,序列)
举例:number = [1,2,3,4,5]
dd = list(map(lambda x:x*2,number))
print(dd)
reduce 函数: 用于对序列中的元素进行累积操作,将序列中的前两个元素用指定的函数计算得出结果,然后将该结果与下一个元素继续进行计算,直到处理完所有的元素。
reduce 函数需要通过 functools 模块导入
语法:reduce(函数,序列)
举例:累加和
from functools import reduce
numbers = [1, 2, 3, 4, 5]
sum = reduce(lambda x, y: x + y, numbers)
print(sum)  # 输出:15
  1. `list1=[2*x+1 for x in range(10)]
  2. 对列表 lst = [1, -2, 10, -12, -4, -5, 9, 2] 实现排序,按照正的放前面,
    负的放后面,并且分别按绝对值从小到大。即输出:[1, 2, 9, 10, -2, -4, -5,
    -12]方法是:lst.sort(key=lambda x: (x < 0, abs(x)))等同于:
    lst.sort(key=lambda x: abs(x))—>lst.sort(key=lambda x: x < 0)
  3. 装饰器

17、lambda 函数(匿名函数),匿名函数有什么局限性

匿名函数,也就是 lambda 函数,通常用在函数体比较简单的函数上。匿名函数顾
名思义就是函数没有名字,因此不用担心函数名冲突。
不过 Python 对匿名函数的支持有限,只有一些简单的情况下可以使用匿名函数。

18、KISS 原则

KISS 原则是英语 Keep It Simple, Stupid 的首字母缩写。
KISS 原则是指在设计当中应当注重简约的原则。

19、简述函数式编程

在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。
除了匿名函数外,Python 还使用 fliter(),map(),reduce(),apply()函数来支持函
数式编程

20、copy()与 deepcopy()区别

deepcopy()—–深复制,即将被复制对象完全再复制一遍作为独立的 新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
copy()—–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一
个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签
也会随之改变。
浅拷贝只拷贝一层, 深拷贝拷贝全部
第一:非容器类型(不可变对象, 比如数字,字符串和其他原子类型的对象,例如
代码,类型和 range 对象等)没有拷贝一说,浅拷贝是完全用切片操作来完成的。
第二:如果元组变量只包含原子类型对象,那么深拷贝将不会进行。

21、如何捕获异常,常用的异常机制?

如果没有对异常进行任何预防,那么在程序执行的过程中发生异常,就会中断
程序,调用 python 默认的异常处理器,并在终端输出异常信息。

try…except…finally 语句:
当 try 语句执行时发生异常,回到 try 语句层,寻 找后面是否有 except 语句。
找到 except 语句后,会调用这个自定义的异常处理器。except 将异常处理完毕后,
程序继续往下执行。finally 语句表示,无论异常发生与否,finally 中的语句都要执
行。
assert 语句:
判断 assert 后面紧跟的语句是 True 还是 False,如果是True 则继续
执行 print,如果是 False 则中断程序,调用默认的异常处理器,同时输出assert
语句逗号后面的提示信息。
with 语句:
如果 with 语句或语句块中发生异常,会调用默认的异常处理器处理,
但文件还是会正常关闭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录 使用 git 克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )

解决方法&#xff1a; 1. 新建空文件夹->右键->点击 Git Bash Here2. 输入 cd C&#xff1a;3. 输入 cat ~/.ssh/id_rsa.pub4. 输入 ssh-keygen重复回车&#xff0c;生成一个矩形&#xff0c;则说明公钥已经生成了。重复步骤3&#xff0c;生成publickey&#xff0c;右键…

docker-ubuntu

docker ps docker images 拉取ubuntu镜像 docker pull ubuntu 启动 docker start podid docker run -itd -e TZAsia/Shanghai --name ubuntu-test -v /share:/shared -d ubuntu:latest 进入bash界面 docker exec -it podid /bin/bash 安装sudo apt-get install sudo …

Vue2基础学习

vue基础学习 Vue基础指令v-show 和 v-ifv-on指令v-bind指令v-bind操作classv-bind 操作stylev-for 指令练习&#xff1a;图书管理案例v-modelv-model原理 指令修饰符v-model指令修饰符click.stop-》阻止冒泡按键修饰符阻止默认行为 计算属性计算属性简写computed计算属性VS方法…

HTML 标签讲解

HTML 标签讲解 HTML 语言结构根元素元数据元素主体根元素大纲元素文本内容语义化内联文本图像与多媒体编辑标识table表格内容表单内容table表单 HTML 语言结构 Markup &#xff08;标记、标签&#xff09;用来容纳和描述内容 严格意义上&#xff0c;标签是指开始标签&#xf…

优化爬虫效率:利用HTTP代理进行并发请求

网络爬虫作为一种自动化数据采集工具&#xff0c;广泛应用于数据挖掘、信息监测等领域。然而&#xff0c;随着互联网的发展和网站的增多&#xff0c;单个爬虫往往无法满足大规模数据采集的需求。为了提高爬虫的效率和性能&#xff0c;我们需要寻找优化方法。本文将介绍一种利用…

企业无线局域网部署最佳实践

文章目录 企业无线局域网部署最佳实践引言1. 无线网规划和设计a. 选择合适的频宽b. 网络规划工具c. 考虑物理环境d. 用户密度和需求e. 未来扩展f. 安全性和策略g. 测试和验证2. 无线局域网容量2.1 用户和设备预测2.2 应用流量分析2.3 带宽管理2.4 无线技术选择2.5 网络健康检查…

Java程序中常用的设计模式有哪些和该种设计模式解决的痛点

设计模式是大量程序员智慧的结晶&#xff0c;是优秀的代码范式&#xff0c;是以前那些大佬程序员的编程经验总结&#xff0c;非常值得学习。 在软件开发中&#xff0c;有许多常用的设计模式&#xff0c;每种模式都解决了特定类型的问题。以下是一些常见的设计模式及其简要介绍&…

鳄鱼指标和ADX组合后,发现买卖信号真清晰

通过之前的文章分享&#xff0c;anzo capital昂首资本相信各位投资者对ADX已经有了深刻的理解&#xff0c;今天在后台有小伙伴分享了鳄鱼指标&#xff0c;没想到的是&#xff0c;鳄鱼指标和ADX组合后&#xff0c;买卖信号变的更清晰了&#xff0c;今天就分享一下。 鳄鱼指标是一…

uni-app 之 vue语法

uni-app 之 vue语法 image.png --- v-html 字符 --- image.png <template><view><view>{{title}}</view>--- v-html 字符 ---<view>{{title2}}</view><view v-html"title2"></view><view>{{arr}}</view&g…

API接口接入电商平台案例,采集淘宝天猫拼多多1688京东LAZADA数据按关键字搜索商品示例

按关键字搜索商品数据API接口可以让用户轻松地在海量商品中找到自己需要的商品。这个接口包括多种搜索方式&#xff0c;例如利用关键字搜索商品名称、商品描述、商品分类、商家信息等。同时&#xff0c;还可以通过不同的排序方式进行筛选&#xff0c;例如销量排行、价格排行、评…

垃圾回收 - 标记压缩算法

压缩算法是将标记清除算法与复制算法相结合的产物。 1、什么是标记压缩算法 标记压缩算法是由标记阶段和压缩阶段构成。 首先&#xff0c;这里的标记阶段和标记清除算法时提到的标记阶段完全一样。 接下来我们要搜索数次堆来进行压缩。压缩阶段通过数次搜索堆来重新填充活动对…

51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真+程序+原理图+报告+讲解视频)

51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图元器件清单 5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机…

排序算法:堆排序

数组、链表都是一维的数据结构&#xff0c;相对来说比较容易理解&#xff0c;而堆是二维的数据结构&#xff0c;对抽象思维的要求更高&#xff0c;所以许多程序员「谈堆色变」。但堆又是数据结构进阶必经的一步&#xff0c;我们不妨静下心来&#xff0c;将其梳理清楚。 堆&…

【MySQlL学习笔记】(九)内外连接

内外连接 内连接外连接左外连接右外连接 表的连接分为内连和外连 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#xff1a; select 字段 from 表…

腾讯云网站备案详细流程_审核时间说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息&#xff0c;然后提交备案后等待腾讯云初审&#xff0c;初审通过后进行短信核验&#xff0c;最后等待各省管局审核&#xff0c;前面腾讯云初审时间1到2天左右&#xff0c;最长时间是等待管局审核时间&#xff0c;网站备案…

选择最适合您的Bug管理软件:市场比较与推荐

“Bug管理软件哪家好&#xff1f;市场上有许多优秀的Bug管理系统品牌如&#xff1a;Zoho Projects、JIRA、Redmine、Bugzilla、MantisBT。” 一款高效的Bug管理系统可以帮助团队更有效地发现、记录和解决软件中的问题&#xff0c;从而提高产品质量和用户满意度。本文将为您介绍…

QT人脸识别知识

机器学习的作用&#xff1a;根据提供的图片模型通过算法生成数据模型&#xff0c;从而在其它图片中查找相关的目 标。 级联分类器&#xff1a;是用来人脸识别。 在判断之前&#xff0c;我们要先进行学习&#xff0c;生成人脸的模型以便后续识别使用。 人脸识别器&#xff1a;…

jenkins常见问题

1、忘记密码&#xff1f; 解决办法&#xff1a; 找到安装目录&#xff0c;linux安装目录一般是在/root/.jenkins,下用户文件users/admin_xxxxxx/config.xml文件。 打开文件&#xff0c;找到passwordHash块改为&#xff1a;#jbcrypt:$2a 10 10 10DdaWzN64JgUtLdvxWIflcuQu2fgrrM…

Java 复习笔记 - 面向对象篇

文章目录 一&#xff0c;面向对象概述二&#xff0c;类和对象&#xff08;一&#xff09;类和对象的概述&#xff08;二&#xff09;定义类的补充注意事项 三&#xff0c;封装四&#xff0c;就近原则和this关键字&#xff08;一&#xff09;就近原则&#xff08;二&#xff09;…

自学Python01-创建文件写入内容

此处省去安装和前言&#xff0c;需要两个东西 一个去下载安装python官方库 Welcome to Python.org 一个是编译器pycharm PyCharm 安装教程&#xff08;Windows&#xff09; | 菜鸟教程 PyCharm: the Python IDE for Professional Developers by JetBrains 第一节 练习print…