先看一段代码

class Car():def __init__(self,name):self.name = namedef __repr__(self):return self.nameif __name__ == '__main__':import weakrefcars = {Car('bj'),Car('bm'),Car('dz')}    (1)weak = weakref.WeakValueDictionary()for i in cars:                            (2)weak[i.name] = iprint(list(weak.keys()))del cars                                  (3)print(list(weak.keys()))

代码的输出

['bj', 'bm', 'dz']
['dz']

(1)创建了一个Car对象的集合
(2)将Car对象的name属性作为键,Car对象作为值,创建了一个映射,这个映射的值是弱引用
(3)删除cars引用

正常来讲删除掉一个对象的所有引用(不包括弱引用)后,这个对象将会被销毁,然而在这里我们通过弱引用发现 ‘dz’ 这个对象并没有被销毁,这是因为 for 循环中那个 i 是全局变量,他仍然保持这对 ‘dz’ 这个对象的一个引用,因此 ‘dz’ 并没有被销毁。

再看一段代码

def func():if True:a = 12print(a)
if __name__ == '__main__':func()

来看控制台输出

12

在func函数中if外的代码可以访问if内的变量,说明if内的作用域和if外是同一个作用域,在上面for中也是一样的,这说明if for 等语句内部的作用域和外部的作用域是相同的。

python中if for 作用域问题相关推荐

  1. python中函数的作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  2. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  3. 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了

    [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客-CSDN博客 [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客 ...

  4. Python中的变量作用域

    1.变量的作用域:即变量的有效范围.变量并不是在哪个位置都可以访问的,访问权限取决于这个变量是在哪里赋值的,也就是在哪个作用域内的. 2.在Python中,没有块级作用域,也就是说类似if语句块.fo ...

  5. Python中令人头疼的变量作用域问题,终于弄清楚了

    来源:Python数据之道 作者:大奎  整理:阳哥 学习Python变量过程中,曾经为变量混乱的作用域问题头疼不已,全局变量.局部变量.自由变量傻傻分不清,今天来跟大家分享 Python变量作用域 ...

  6. python中的各种作用域

    声明:本文中大部分内容均在参考网址中,本人进行精简后,略加修改并加上一点自己的理解. 一.python中作用域 1.局部作用域,在函数内部或lambda.类中的全局局部变量中,调用函数时才会创建.每次 ...

  7. Python中变量的作用域?(变量查找顺序)

    函数作用域的LEGB顺序 1.什么是LEGB? L: local 函数内部作用域 E: enclosing 函数内部与内嵌函数之间 G: global 全局作用域 B: build-in 内置作用 p ...

  8. python中变量的作用域

    变量的作用域 变量的作用域就是指变量的有效范围. 变量按照作用范围分为两类,分别是 全局变量 和 局部变量. 全局变量:在函数外部声明的变量就是全局变量 有效范围:全局变量在函数外部可以正常使用.全局 ...

  9. python中函数作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

最新文章

  1. 北大智能学院成立!AI视觉泰斗朱松纯教授任院长
  2. CloudStack设计思想
  3. C语言树形打印二叉树
  4. HaProxy介绍,安装及配置
  5. Leaflet中使用Leaflet-echarts3插件实现航班航线动态模拟
  6. VTK:Shaders之ColorByNormal
  7. P7323-[WC2021]括号路径【并查集,启发式合并】
  8. border三角形阴影(不规则图形阴影)和多重边框的制作
  9. zblog php mip,zblog网站改造百度MIP的教程仅针对zblog轻奢主题
  10. spinningup 绘制曲线
  11. 0day影响 Chrome和 Safari,谷歌不修复
  12. jenkins教程_1 简介
  13. 文强+光裕+唐骏,告诉我们什么?
  14. 使用jmeter测试接口
  15. 数据库安全风险行为 目录 1. 数据库安全风险行为 2 1.1. Sql注入SQLi)攻击行为 2 1.2. . 过多的、不适当的和未使用的特权 2 1.3. 2. 权限滥用(数据库系统管理员和开
  16. 汉王考勤管理系统教程
  17. Python新手到熟练的百天之路
  18. word文档分节后 如何删除某一节的页码
  19. 请简述python数据分析流程_简单案例讲解Python数据分析的基本步骤
  20. Kaggle word2vec NLP 教程 第二部分:词向量

热门文章

  1. 超实用编程技术指南!为什么你还学不会一门编程语言?
  2. 对不起,我不接私活了
  3. HTML5 API详解(11):Cache 应用程序缓存,这下离线也可以玩了
  4. python cv2 轮廓的包络 面积_Python + Opencv2 实现轮廓提取,轮廓区域面积计算
  5. ROS----小乌龟之你追我赶
  6. 转录组+微生物组联合解密困扰50年的丛枝菌根共生“自我调节”中枢分子网络机制...
  7. Linux下那些查找命令
  8. 「兼容M1」Royal TSX for Mac 最强远程管理软件
  9. 第41课 蜗牛与葡萄树 《小学生C++趣味编程》
  10. c语言如何查看内置函数,C中函数内部的函数