第二部分阶段总结

第二部分阶段总结

    • 1.知识补充
      • 1.1 nolocal关键字
      • 1.2 yield from
      • 1.3 深浅拷贝
    • 2.阶段总结
    • 3.考试题

1.知识补充

1.1 nolocal关键字

在之前的课程中,我们学过global关键字。

name = 'root'def outer():name = "武沛齐"def inner():global namename = 123inner()print(name)outer()
print(name)

其实,还有一个nolocal关键字,用的比较少,此处作为了解即可。

name = 'root'def outer():name = "武沛齐"def inner():nonlocal namename = 123inner()print(name)outer()
print(name)
name = 'root'def outer():name = 'alex'def func():name = "武沛齐"def inner():nonlocal namename = 123inner()print(name)func()print(name)outer()
print(name)
name = 'root'def outer():name = 'alex'def func():nonlocal namename = "武沛齐"def inner():nonlocal namename = 123inner()print(name)func()print(name)outer()
print(name)

1.2 yield from

在生成器部分我们了解了yield关键字,其在python3.3之后有引入了一个yield from。

def foo():yield 2yield 2yield 2def func():yield 1yield 1yield 1yield from foo()yield 1yield 1for item in func():print(item)

1.3 深浅拷贝

  • 浅拷贝

    • 不可变类型,不拷贝。

      import copyv1 = "武沛齐"
      print(id(v1)) # 140652260947312v2 = copy.copy(v1) 
      print(id(v2)) # 140652260947312
      

      按理说拷贝v1之后,v2的内存地址应该不同,但由于python内部优化机制,内存地址是相同的,因为对不可变类型而言,如果以后修改值,会重新创建一份数据,不会影响原数据,所以,不拷贝也无妨。

    • 可变类型,只拷贝第一层。

      import copyv1 = ["武沛齐", "root", [44, 55]]
      print(id(v1))  # 140405837216896
      print(id(v1[2]))  # 140405837214592v2 = copy.copy(v1)
      print(id(v2))  # 140405837214784
      print(id(v2[2]))  # 140405837214592
      

在这里插入图片描述

  • 深拷贝

    • 不可变类型,不拷贝

      import copyv1 = "武沛齐"
      print(id(v1))  # 140188538697072v2 = copy.deepcopy(v1)
      print(id(v2))  # 140188538697072
      

      特殊的元组:

      • 元组元素中无可变类型,不拷贝

        import copyv1 = ("武沛齐", "root")
        print(id(v1))  # 140243298961984v2 = copy.deepcopy(v1)
        print(id(v2))  # 140243298961984
        
      • 元素元素中有可变类型,找到所有【可变类型】或【含有可变类型的元组】 均拷贝一份

        import copyv1 = ("武沛齐", "root", [11, [44, 55], (11, 22), (11, [], 22), 33])
        v2 = copy.deepcopy(v1)print(id(v1))  # 140391475456384
        print(id(v2))  # 140391475456640print(id(v1[2]))  # 140352552779008
        print(id(v2[2]))  # 140352552920448print(id(v1[2][1]))  # 140642999940480
        print(id(v2[2][1]))  # 140643000088832print(id(v1[2][2]))  # 140467039914560
        print(id(v2[2][2]))  # 140467039914560print(id(v1[2][3]))  # 140675479841152
        print(id(v2[2][3]))  # 140675480454784
        
    • 可变类型,找到所有层级的 【可变类型】或【含有可变类型的元组】 均拷贝一份

      import copyv1 = ["武沛齐", "root", [11, [44, 55], (11, 22), (11, [], 22), 33]]
      v2 = copy.deepcopy(v1)print(id(v1))  # 140391475456384
      print(id(v2))  # 140391475456640print(id(v1[2]))  # 140352552779008
      print(id(v2[2]))  # 140352552920448print(id(v1[2][1]))  # 140642999940480
      print(id(v2[2][1]))  # 140643000088832print(id(v1[2][2]))  # 140467039914560
      print(id(v2[2][2]))  # 140467039914560print(id(v1[2][3]))  # 140675479841152
      print(id(v2[2][3]))  # 140675480454784
      
      import copyv1 = ["武沛齐", "root", [44, 55]]
      v2 = copy.deepcopy(v1)print(id(v1))  # 140405837216896
      print(id(v2))  # 140405837214784print(id(v1[2]))  # 140563140392256
      print(id(v2[2]))  # 140563140535744
      

      在这里插入图片描述

2.阶段总结

在这里插入图片描述

3.考试题

考试题的目的是让大家对自己近期知识点学习练习 以及 自测,请大家务必【独立】完成(切勿翻看笔记 & 切勿网上搜索 )。

  • 第一步:自己独立完成(编程题目可以在pycharm中编写)

  • 第二步:做完之后,翻看自己笔记去修改和更正。

  • 第三步:觉自己做的没问题了,最后再去看考试题的参考答案和讲解。

详情见附件《第二阶段考试题.md》文件。

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

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

相关文章

Web安全研究(六)

文章目录 HideNoSeek: Camouflaging(隐藏) Malicious JavaScript in Benign ASTs文章结构Introjs obfuscationmethodologyExample HideNoSeek: Camouflaging(隐藏) Malicious JavaScript in Benign ASTs CCS 2019 CISPA 恶意软件领域,基于学习的系统已经非常流行&am…

AI论文速读 | 2024【综述】图神经网络在智能交通系统中的应用

论文标题:A Survey on Graph Neural Networks in Intelligent Transportation Systems 链接:https://arxiv.org/abs/2401.00713 作者:Hourun Li, Yusheng Zhao, Zhengyang Mao, Yifang Qin, Zhiping Xiao, Jiaqi Feng, Yiyang Gu, Wei Ju, …

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

Web前端开发

一、概述 1.1 什么是HTML、CSS&#xff1f; 二、HTML 2.1 HTML快速入门 2.2 基础标签和样式 2.2.1 标题 &#xff08;1&#xff09;标题排版 输入&#xff01;加回车&#xff0c;直接生成HTML基本结构标签 。 <!-- 声明当前文档类型 --> <!DOCTYPE html> &l…

遇到太多的Windows问题怎么办?这里提供几个修复工具

“部署映像服务和管理”工具(DISM)是一个有用且高级的工具,用于扫描、更改和修复任何Windows系统问题。许多操作系统问题,如性能差、启动问题或特定崩溃,都可以归结为损坏的系统文件,而此命令工具能够解决这些问题。 如何检查文件系统 在运行DISM修复之前,重要的是运行…

Mac 版 Excel 和 Windows 版 Excel的区别

Excel是一款由微软公司开发的电子表格程序&#xff0c;广泛应用于数据处理、分析和可视化等领域。它提供了丰富的功能和工具&#xff0c;包括公式、函数、图表和数据透视表等&#xff0c;帮助用户高效地处理和管理大量数据。同时&#xff0c;Excel还支持与其他Office应用程序的…

算法讲解之字符串

前言&#xff1a; 本文主要讲解算法中和字符串结合的题目&#xff0c;跟字符串结合的算法题种类丰富&#xff0c;主要是跟别的算法结合&#xff0c;下面介绍几道比较经典的题目~ 第一道&#xff1a;14. 最长公共前缀 题目描述&#xff1a; 编写一个函数来查找字符串数组中的…

使用Vue.js输出一个hello world

导入vue.js <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> 创建一个标签 <div id"app">{{message}}</div> 接管标签内容&#xff0c;创建vue实例 <script type"text/javascript">va…

掌握Pandas.to_datetime函数:时间序列数据处理的利器【第78篇—Pandas.to_datetime函数】

掌握Pandas.to_datetime函数&#xff1a;时间序列数据处理的利器 在数据处理和分析中&#xff0c;时间序列数据的处理是一个重要的环节。Pandas库中的to_datetime函数为我们提供了一个方便而强大的工具&#xff0c;用于将字符串或数字等格式的日期转换为Pandas中的datetime对象…

一探Lepton Search究竟

2024年1月25日&#xff0c;阿里巴巴原技术副总裁在 Twitter 上称用不到 500 行 Python 代码实现了 AI 对话搜索引擎&#xff0c;并在27日附上了开源地址&#xff1a;https://github.com/leptonai/search_with_lepton&#xff0c;截止春节期间已经5.8K的Star。 Twitter截图 Comm…

three.js 细一万倍教程 从入门到精通(三)

目录 五、详解PBR材质纹理 5.1、详解PBR物理渲染 5.2、标准网格材质与光照物理效果 5.3、置换贴图与顶点细分设置 5.4、设置粗糙度与粗糙度贴图 5.5、设置金属度与金属贴图 5.6、法线贴图应用 5.7、如何获取各种类型纹理贴图 5.8、纹理加载进度情况 单张图片加载 多…

[Java][算法 滑动窗口]Day 02---LeetCode 热题 100---08~09

第一题 无重复字符串的最长子串 思路 其实就是在字符串S中 找到没有重复的最长子串的长度 这道题的难点就是在于如何判断最长并且无重复 首先 最长长度 可以使用变量max记录保存 再者 判断有无重复 最简单的方法就是 暴力遍历法 即对于每次找的子串都再次寻找遍历…