码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 深度之眼(十六)——Python:有益的探索


    文章目录

    • 导读
    • 一、数据类型的底层实现
      • 1.1 列表:地址引用
      • 1.2 字典:稀疏数组
      • 1.3 字符串:紧凑数组
      • 1.4 类型是否可变
      • 1.5 小例子
    • 二、简洁的语法
      • 2.1 解析语法
      • 2.2 条件表达式
    • 三、三大神器
      • 3.1 生成器
      • 3.2 迭代器
      • 3.3 装饰器
    • 总结

    导读

    在这里插入图片描述

    一、数据类型的底层实现

    1.1 列表:地址引用

    浅拷贝,拷贝的是地址
    散列表存放地址
    在这里插入图片描述
    如果是对元组进行添加的话,会开辟一段新的空间进行存储

    在这里插入图片描述

    深拷贝,将会重新开辟空间,相互独立

    1.2 字典:稀疏数组

    字典查找的速度非常快
    底层原理
    创建字典后,第一步,通过hash()计算键的散列值
    第二步,根据计算的散列值确定其在散列表中的位置
    (极个别会有冲突情况,但是内部都有相应的处理方法)

    在这里插入图片描述

    键值对的访问过程
    第一步:计算要访问的键的散列值
    第二步:根据计算的散列值,通过一定的规则,确定其在散列表中的位置
    第三步:读取该位置上存储的值
    在这里插入图片描述

    理解:就是牺牲空间节省时间,

    1.3 字符串:紧凑数组

    通过紧凑数组,实现字符串的存储
    因为字符串一般是一起访问得,地址紧凑在一起

    在这里插入图片描述

    1.4 类型是否可变

    1.不可变类型:数字、字符串、元组
    在生命周期中保持内容不变
    换句话说,改变了就不是它自己了(id变了)
    不可变对象的 += 操作实际上创建了一个新的对象

    元组并不是总是不可变的

    1. 可变类型:列表、字典、集合
      , id保持不变,但是里面的内容可以变
      , 可变对象的+=操作实际在原对象的基础上就地修改

    1.5 小例子

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、简洁的语法

    2.1 解析语法

    在这里插入图片描述
    在这里插入图片描述

    2.2 条件表达式

    在这里插入图片描述

    三、三大神器

    3.1 生成器

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.2 迭代器

    在这里插入图片描述
    (1)列表、元组、字符串、字典.集合、文件
    可以使用isinstance()判断-一个对象是否是[terable对象
    在这里插入图片描述
    (2)列表、 元组、字符串、字典、集合不是迭代器

    for item in Iterable等价于:
    先通过iter ()函数获取可迭代对象Iterable的迭代器
    然后对获取到的迭代器不断调用next ()方法来获取下一个值并将其赋值给item
    当遇到StopIteration的异常后循环结束
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    3.3 装饰器

    1、需求的提出
    (1)需要对已开发上线的程序添加某些功能
    (2)不能对程序中函数的源代码进行修改
    (3)不能改变程序中函数的调用方式

    3、高阶函数
    (1)接收函数作为参数
    (2)或者返回-个函数
    满足.上述条件之-的函数称之为高阶函数
    在这里插入图片描述
    4、嵌套函数
    在函数内部定义一个函数
    在这里插入图片描述
    5.闭包
    在这里插入图片描述
    团包:延伸了作用域的函数
    如果一个函数定义在另-个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包
    闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)
    在这里插入图片描述
    6.一个简单的装饰器
    嵌套函数实现

    在这里插入图片描述
    语法糖

    在这里插入图片描述

    总结

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    SpringBoot数据层解决方案
    SVG的常用元素和动画运用
    在线教育项目【课程科目板块】前端vue和后端查询功能实现
    【深度学习】 Python 和 NumPy 系列教程(十一):NumPy详解:3、数组数学(元素、数组、矩阵级别的各种运算)
    03初始Docker
    easyexcel 导出引发单字母属性名引发的血案
    【C语言】详解 malloc 、calloc函数的区别
    [C/C++] 数据结构 LeetCode:用队列实现栈
    我的为人处事真的有问题吗?
    Java中Xml4j的使用
  • 原文地址:https://blog.csdn.net/m0_52592798/article/details/125988883
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号