python的知识点关键词_Python基础知识的集合,知识点,合集

2023-11-02

概念

Python有什么优势

解释性语言,语法简单易懂,可读性强

自动内存管理,基于引用计数法等可以对垃圾进行自动回收;内存池机制,提前申请好小内存,内存分配效率更高。让程序员可以更加专注代码的实现。

有很多库可以调用,站在巨人的肩膀上简单的实现想要的功能

可扩展,和其他编程语言或者软件有可连接的接口

免费开源

Python和Java的对比

编译型语言:经过一次编译之后,由操作系统直接执行。如c++和c

解释型语言:读一行,解释执行一行

Java:现将程序编译成字节码文件,然后字节码文件在虚拟机上运行,虚拟机从字节码文件读一行解释执行一行。

所以Java是结合了编译型和解释型语言的特点。

语言特点:Python是强类型的动态语言,是解释性语言;Java是强类型的静态语言,结合了解释性语言和编译型语言的特点。所以Java的运行速度要快一些。

多线程模型:python的多线程不能实现多CPU条件下的并行运行,每个线程在运行时首先需要获得GIL,Python的多线程是通过协程或者多进程的机制来实现。但是Java的多线程编程很强大,支持真正的多线程并发操作。

垃圾回收:Python的垃圾回收机制以引用计数法为主,标记清除和分代回收为辅。

语法基础

is和==的区别

is表示两个对象是否指向同一块地址空间,若为true,表示指向同一地址空间,且值一定相等。(Java的==)

==表示值是否相等。(Java的equals)

“hello world” 有空格,为非标识符允许的字符,不驻留内存。

a = "hello world"

b = "hello world"

print(id(a)) # 输出 140506208811952

print(id(b)) # 输出 140506208812208

print(a is b) # 输出 False

print(a == b) # 输出 True

a = "hello"

b = "hello"

print(id(a)) # 输出 140506224367496

print(id(b)) # 输出 140506224367496

print(a is b) # 输出 True

print(a == b) # 输出 True

元组、列表和字典的区别

列表:可重复,类型可不同

元组:结构和列表类似,但是是不可变对象

字典:定义了键和值之间一对一的关系,但是是以无序的方式存储的。键值不可以重复。但是python3.7以后变成有序了。

深拷贝和浅拷贝

对于不可变对象(元组、字符串等),python采用的是引用计数法,不管是深拷贝还是浅拷贝,作用都是一致的,相当于复制了一份副本,当原对象内部的对象发生改变时,不会影响到幅值对象。

等号赋值:相当于给给原来对象贴一个新标签,当其中一个标签被改变的时候,另一个标签也会随之变化。

对于浅拷贝,分两种情况:

1)一种是不可变对象,和等号赋值一样。

2)一种是可变对象,这里又分两种情况:

​ 可变对象内部无复杂子元素:原来值的改变不会影响浅拷贝的值

​ 可变对象内部有复杂子元素:如果改变原来值中复杂子对象的值,会影响浅拷贝的值。

对于深拷贝,对一个对象所有层次的拷贝,作为一个新的个体单独存在,所以不管原本对象怎么改变,都不会改变拷贝副本的值。相当于备份。

浅拷贝占用空间小,拷贝层次低,拷贝速度快,因此效率高。一般默认就是浅拷贝。

位置参数和关键字参数的区别(*args,**kw)

函数参数可为分如下几种:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

*args:可变参数,args接收的是一个tuple

**kw:关键字参数,kw接收的是一个kw。比如我们要实现用户注册,有必输项和非必输项,这些非必输项就可以用关键字参数来接受。

对于任意函数都可以通过类似func(*args,**kw)的形式来调用,无论他的参数是怎么定义的。

装饰器

装饰器本身是一个函数,可以让已有的函数再不改变的情况下增加功能。适合有切面需求的场景,比如权限校验,日志记录等。

和Java里面的动态代理实现方式有点类似。

生成器和迭代器

迭代器

是访问集合元素的一种方式,用iter()创建迭代器,调用next()函数获取对象。(迭代器只能往前不能往后)

生成器

是一种特殊的迭代器,生成一系列的值用于迭代。

使用了yield函数,返回迭代器。

区别

创建:生成器创建一个函数,用yield返回对象;迭代器用内置函数iter()和next();

线程

多线程的创建

使用threading的模块,启动一个线程就是把一个函数传入并创建thread实例,然后调用start( )开始执行。

GIL

python中线程通信的方式是通过GIL(全局解释锁)来实现的,任何python的线程执行前必须先获得GIL锁,然后每执行100个字节,解释器就释放GIL锁,让别的线程有机会执行。所以多线程在python中只能交替执行,Python的多线程只能利用一个核。

Python多线程模型

Python由于GIL锁的设计,导致多线程无法利用多核。

对于CPU密集型的任务,主要是消耗CPU资源,Python这样的脚本语言运行效率很低,完全不适合这种计算密集型的任务。

Python适合IO密集型的任务,开发效率最高(代码最少)

内存管理与垃圾回收

内存管理

python有内存池机制,小内存使用内存池进行分配,大内存使用malloc进行分配。当创建大量消耗小内存的对象时,频繁调用new/malloc会导致大量的内存碎片,同时效率较低。内存池就是先申请一定数量的内存块作为备用,当有内存需求时,就从内存池中分配内存给这个需求。

垃圾回收

以引用计数为主,标记清除和分代回收为辅。

引用计数

每个对象都会有一个引用计数,当一个对象有新的引用时就计数加一,当引用它的对象被删除,计数就减一。一旦一个对象的引用计数为0,该对象就被回收,对象占用的内存空间被释放。

优点:简单,一旦没有被引用,内存就直接释放了。

缺点:需要额外的空间维护引用计数;同时不能解决对象的循环引用。

标记清除

解决循环引用的问题。先根据可达性分析把活动对象标记,再把没有标记的对象进行回收。

分代回收

把内存分成三代,年轻代、中年代、老年代。新建的对象呗分配到年轻代,年轻代回收之后,没有被回收的对象被挪到老年代。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的知识点关键词_Python基础知识的集合,知识点,合集 的相关文章

  • 如何在github上创建个人项目的在线演示demo

    背景 以前是看到别人的GitHub上的项目源码中 后面会跟着一个网址 是该项目的demo 可是就单纯的没有再去思考 我是不是也可以把自己的项目这样放到GitHub上去 让它启动起来 不再是冰冷的code 现在要去打破这种对未知事物的恐惧 要
  • Linux系统命令 - 查看内存使用情况

    一 查看内存使用情况 在Linux系统中 大部分操作都通过命令行来完成 因为大部分情况下不开启图形界面 在服务器环境 则只能通过shell执行操作 下面介绍查看内存使用情况的相关命令 包括物理内存 RAM 和交换内存 swap 我们经常需要
  • mac下安装maven的步骤

    Mac下安装maven的步骤 1 下载maven 2 放到制定的目录 3 打开终端命令行 输入 vi bash profile 接下来会跳到一个编译界面 如果发现输入不进去 不要慌 按i或a键 进入编辑模式 exportMAVEN HOME
  • 【DNSPOD】利用DNSPod实现动态域名解析【DDNS】

    1 注册域名 首先需要注册一个域名 首选腾讯云域名 因为DNSPod 2015年被腾讯收购后和腾讯云的账号打通了 腾讯云官网 2 进入dnspod官网管理控制台dnspod官网 创建一条A记录解析 IP地址暂时随便填就行 主机记录名称就是后
  • (转)Macos安装java环境,快速切换Java版本

    转自 Macos安装java环境 快速切换Java版本 baby shark的博客 CSDN博客 macos切换java版本 安装Java8 java11 java8版本我习惯使用openjdk1 8 java11版本我习惯使用openjd
  • 正交解调---通过定时器调制两个相位差为90°的PWM波用于正交解调

    调制两个相位差为90 的PWM波 一 掌握PWM的两种输出模式 1 PWM边沿对齐模式 2 PWM中心对齐模式 二 通过HAL库的编程思想调制PWM波 1 调制频率为1 2KHz的PWM波 两个波形相位差为90 HAL库配置1 原波形 HA
  • Unity学习笔记:设置层级的几种方法、对象几种消失的区别

    Unity学习笔记 设置层级的几种方法 1 设置层级的几种方法 一种是使用sortingLayerName 另外一种是这样 sortingLayerID 2 对象几种消失的区别 https blog csdn net cbbbc artic
  • 《MySQL必知必会》 语法学习笔记以及拓展

    文章目录 第一部分 基本语句 检索语句 select 限制 limit 排序检索数据 order by desc 过滤数据where 组合过滤 and or in not 通配符过滤 正则表达式 REGEXP 区分大小写 匹配 与LIKE的
  • 两大错误

    生活和生意当中有两大错误 第一是缺少思考的情况下鲁莽行事 二是根本不采取任何的行动 原BEA公司大股东Carl Celian Icahn
  • 关于两道java面试题

    1 public static void main String args Thread t new Thread Override public void run System out println aaa t run System o
  • geneid/genesymbol/ensemblid等之间的转换

    在基因注释时 难免碰到各种GENE在不同数据库之间的ID转换 例如 Ensembl ID 转Entrez ID 或者Entrez ID与GENE Symbol之间的转换 这里介绍一下常用的三个在线网站 DAVID bioDBnet Ense
  • python敏感字替换_Python敏感词替换成*

    敏感词文本文件 filtered words txt 当用户输入敏感词语 则用星号 替换 例如当用户输入 北京是个好城市 则变成 是个好城市 filtered words txt filtered words txt coding utf
  • U盘插上就让格式化是坏了吗?数据怎么恢复

    U盘插上就让格式化是坏了吗 当您遇到U盘插上后提示需要格式化的情况时 不要慌张 这种情况并不一定意味着U盘已经坏了 下面我们一起来了解下如何恢复里面的数据 并解决U盘提示格式化的问题 U盘一插上就提示格式化是什么原因 许多人可能会有一个困惑
  • springboot整合spring security + MybatisPlus入门

    springboot整合spring security入门 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架 它是用于保护基于Spring的应用程序的实际标准 Spring Security是一个框架 致力于
  • JDBC与PostgreSQL(三):存储过程和函数

    目录 一 过程化SQL简介 二 存储过程 三 函数 一 过程化SQL简介 SQL的一大优点就是高度非过程化 即开发人员只要面向结果编程 而无需关注具体的实现细节 然而高度非过程化使SQL语言缺少具体的业务逻辑控制功能 因此嵌入式SQL和过程
  • LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色

    给你一个坐标 coordinates 它是一个字符串 如a1 b6 表示国际象棋棋盘中一个格子的坐标 下图是国际象棋棋盘示意图 如果所给格子的颜色是白色 请你返回 true 如果是黑色 请返回 false 给定坐标一定代表国际象棋棋盘上一个
  • 使用stata完成毕业实证论文的基础操作(上)

    想起本科毕业论文时要用 Stata 跑实证却一点都不会的痛苦 这学期学明白了一点 因此写个帖子帮助一点都不懂的小白上手使用 Stata 本文9000余字 非常详细地介绍了最基础的命令 上篇内容包括 Stata 简介 标签命名 格式设置 统计
  • 没有电商巨头有钱,又要挑战双十一流量高峰,一次低成本、高质量的大促是如何做到的?

    今年7月初 易车网数据库负责人田震愈发焦虑 此时 离易车818汽车狂欢节正式开幕只剩一月有余 但数据库压力测试结果并不理想 818汽车狂欢节乃易车网首次大促活动 并且采用台网互动的直播形式 涉及数据库的应用场景颇多 如实时数据看板 台网互动
  • 05libevent库下未决与非未决的解释

    05libevent库下未决与非未决的解释 以下是关于libevent学习的相关文章 01libevent库的下载与安装并且测试是否安装成功 02libevent库的整体框架思想 03libevent下通信的主要函数 04libevent库

随机推荐

  • mysql的SQL用法及Navicat的相关使用

    以下语法均在mysql 8 0下 一 建立约束 数据库中约束分为一下几种 主键约束 Primary Key constraint 要求主键列数据唯一 并且不允许为空 唯一约束 Unique constraint 要求该列唯一 允许为空 但只
  • 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配

    独家揭秘 计量经济学的魅力与激情 陈强老师的高级计量现场班侧记 2019 5 1 如何学好高级计量 探秘陈强老师的高级计量及Stata现场班 2019 10 1 接上期推文 本期探讨倾向得分匹配的适用条件 倾向得分匹配 PSM 倾向得分匹配
  • 3、无人驾驶--路径规划算法:Floyd算法

    3 Floyd算法 1 算法简介 1 1 Floyd 佛洛依德 算法是解决给定的加权图中顶点间的最短路径的一种算法 可以正确处理有向图的最短路径问题 1 2 特点 Floyd算法是一种动态规划算法 稠密图效果最佳 节点间的连接权值可正可负
  • 模拟弱网测试方法总结

    我们测试某些需求 可能需要模拟弱网环境 下面介绍几种模拟弱网的方法 一 使用Fiddler 安装Fiddler 保证手机设备 笔记本IP都在同一个网段 Fiddler中在Rules Custom Rules中设置弱网的标准上传及下传10KB
  • Pandas是用于数据操作和分析的强大库

    Python中有许多流行的统计分析库 下面是其中一些主要的库及其主要用法 NumPy 用途 NumPy是Python中的数值计算库 提供多维数组对象和各种数学函数 用于高效处理大规模数据和执行数值计算 主要用法 创建和操作多维数组 执行数值
  • 比较好用的图床分享

    链接 https picx xpoet cn upload 网页上有教程 实用性强 转存很快 推荐
  • 2022版Web面试上岸手册,最新最细致!

    大裁员背景下 没什么比辞职后找不到工作更扎心 在行情好转前 前端程序员只能 猥琐发育 不轻易跳槽 同时要修炼内功 对八股文 底层源码 重点项目等进行查缺补漏 静待行情好转抓住机会 为帮大家在 就业寒冬 期更好的稳步提升 精进技术 以便保全自
  • MySQL中的日志

    查询日志 binlog redo log undo log介绍 目录 日志 MySQL中的4种日志 错误日志 查询日志和慢查询日志 二进制日志 binlog InnoDB 存储引擎的日志 重做日志 redo log 回滚日志 undo lo
  • clickhouse修改默认密码

    1 明文密码 vim etc clickhouse server users xml 找到下面的语句 增加明文密码
  • Centos7 配置Java开发(JDK)环境

    1 下载Java安装包 在Oracale Java 官网找到对应的JDK安装包 现在最常用 JDK1 8 而且现在的系统大都是64位 这里就以LInux64位为例 2 上传到Centos虚拟机 云主机中 将下载好的jdk for linux
  • Java入门(7)——循环和debug 调试

    循环 while 循环 格式 int i 0 初始化条件 while i lt 10 判断条件 System out println i 循环体 i 控制条件 执行顺序 第一次 第二次 第三次 最后一次 条件满
  • Vue2(路由)

    目录 一 路由原理 hash 二 路由安装和使用 vue2 三 路由跳转 四 路由的传参和取值 五 嵌套路由 六 路由守卫 最后 一 路由原理 hash 单页应用的路由模式有两种 1 哈希模式 利用hashchange 事件监听 url的h
  • Pentaho Data Integration:执行job提示 无法找到作业的开始点

    问题 无法找到作业的开始点 解决办法 如下图 选择 发送邮件 软件下载地址 Pentaho Community Edition Download Hitachi Vantara 找到Pentaho Data Integration Base
  • 在vue项目中 , 将字符串转数组 split()

    console log this cityItem fullName console log this cityItem fullName split 在vue项目中 遇到一个常用的方法split 因为常用 又容易记混 所以在此记录 spl
  • 推荐几个好用的代码工具

    SourceTree git 管理工具 postman 接口调试工具 FinalShell shell 链接工具
  • Salient Obejct Detection(SOD)综述

    论文链接 https arxiv org abs 2008 00230 仓库链接 https github com taozh2017 RGBD SODsurvey 介绍 显著目标检测 Salient Obejct Detection 是模
  • 微服务架构下认证和鉴权理解

    认证和鉴权 从单体应用到微服务架构 优势很多 但是并不是代表着就没有一点缺点了 微服务架构 意味着每个服务都是松散耦合的 因此 作为软件工程师和架构师 我们在分布式架构中面临着安全挑战 微服务对外开放的端点 我们称之为 API 单体应用只需
  • leetcode-62不同路径

    题目 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同的路径 示例 输入 m 3 n 2 输出
  • 缩减Docker镜像大小的方法

    对于刚接触容器的人来说 他们很容易被自己构建的 Docker 镜像体积吓到 我只需要一个几 MB 的可执行文件而已 为何镜像的体积会达到 1 GB 以上 本文将会介绍几个奇技淫巧来帮助你精简镜像 同时又不牺牲开发人员和运维人员的操作便利性
  • python的知识点关键词_Python基础知识的集合,知识点,合集

    概念 Python有什么优势 解释性语言 语法简单易懂 可读性强 自动内存管理 基于引用计数法等可以对垃圾进行自动回收 内存池机制 提前申请好小内存 内存分配效率更高 让程序员可以更加专注代码的实现 有很多库可以调用 站在巨人的肩膀上简单的