[oeasy]python0135_变量名与下划线_dunder_声明与赋值

简介: [oeasy]python0135_变量名与下划线_dunder_声明与赋值

变量定义 回忆上次内容

  • 变量 就是 能变的量
  • 上次研究了 变量标识符的 规则
  • 第一个字符 应该是 字母或下划线
  • 合法的标识符可以包括
  • 大小写字母
  • 数字
  • 下划线



  • 还研究了字符串(str)的函数
  • isidentifier
  • 查询字符串
  • 是否为合法标识符



  • 最后发现
  • 这个isidentifier函数有时候不好使?


添加图片注释,不超过 140 字(可选)

  • 这怎么理解呢??🤔

翻看文档

  • and 属于关键字

添加图片注释,不超过 140 字(可选)

  • 如何判断一个字符串是否是关键字呢?

添加图片注释,不超过 140 字(可选)

判断是否为关键字

添加图片注释,不超过 140 字(可选)

  • 关键字 是不能作为标识符的
  • dir()查询模块的时候
  • 经常会看到下划线


添加图片注释,不超过 140 字(可选)

  • 这些下划线如何理解?

下划线

  • from module import * 时
  • 以下划线开头的变量
  • 不被其他模块引用



添加图片注释,不超过 140 字(可选)

  • 所以 _a 可以作为模块内部的变量或者函数

内部变量

  • 除非明确点名

添加图片注释,不超过 140 字(可选)

  • 指清名字 _pi
  • 是可以导入的


  • 不点名不能用吗?

不点名

添加图片注释,不超过 140 字(可选)

  • from random import *
  • 无法导入_e


添加图片注释,不超过 140 字(可选)

上次的值

  • 在游乐场里
  • _下划线 意味着上次的值


添加图片注释,不超过 140 字(可选)

后面的下划线

  • 在后面加上下划线
  • 一般是为了区分已经有的标识符


添加图片注释,不超过 140 字(可选)

  • 使用max
  • 会把max函数 屏蔽掉


  • 使用max_
  • 不会屏蔽 max函数


两端双下划线(dunder)

添加图片注释,不超过 140 字(可选)

  • 系统定义的标识符
  • 模块名
  • 函数名
  • 变量名


添加图片注释,不超过 140 字(可选)

  • dunder变量都是有用意的
  • 不要轻易破坏


前有双下划线

  • 类里面的私有名
  • 无法直接存取


  • 目的是
  • 避免 和 父类或子类的私有变量 重名


添加图片注释,不超过 140 字(可选)

  • 我们再来看看 o 这个变量标识符

细节

  • o 两边并不加引号
  • 因为 这里的 o 是 变量标识符
  • 而不是 字符串
  • 如果加了双引号 就是字符串了



添加图片注释,不超过 140 字(可选)

  • 在等号两端 都保留 有一个空格
  • 可是 为什么要 加空格呢?


可读性

  • 增加文档的可读性
  • 不会 影响程序的执行速度


添加图片注释,不超过 140 字(可选)

  • 这两句话从何说起

加空格的原因

  • 这两句话来自于python之禅

添加图片注释,不超过 140 字(可选)

  • 现在到底有多少变量呢?

locals()

  • 查询本地变量
  • 有一个内置的函数叫做 locals

添加图片注释,不超过 140 字(可选)

  • 可以查询关于 locals 的帮助

添加图片注释,不超过 140 字(可选)

  • 返回的是一个包含当前域中所有变量的字典
  • 声明和赋值都使用等号
  • 声明并赋值 变量o 之后
  • 变量o 真的在内存里有位置了么?


  • 我们来看看

具体位置

添加图片注释,不超过 140 字(可选)

  • id函数是什么意思?
  • help(id)


添加图片注释,不超过 140 字(可选)

  • id返回 对象o的标识符
  • o 确实在内存中 有了位置
  • 但是如果 我们给变量新赋 一个值



  • 那么 存储变量的位置
  • 还是那个 内存地址 么?


实践

  • 虽然 a这个变量名 没有变
  • 但是 id(a)变了


添加图片注释,不超过 140 字(可选)

  • 也就是说
  • a这个容器的 内存位置没变
  • 但是a所指向的 变量位置
  • 在内存中的位置 变了



  • 两次赋值 都是STORE到a这个NAME里面
  • 第二次赋值 和 第一次赋值
  • 有什么区别吗?



区别

  • 变量的声明和赋值究竟有什么不同
  • 第一次赋值时
  • 声明和赋值是同时完成的



添加图片注释,不超过 140 字(可选)

  • 如果是 第二次赋值 呢?

纯赋值

  • 声明了之后
  • 再有 等号赋值 就是 第二次赋值


添加图片注释,不超过 140 字(可选)

  • 是 纯赋值
  • 没有声明新的变量


总结

  • 这次 了解了isidentifier的细节
  • 关于 关键字
  • 关于 下划线


  • 如何查询 变量所指向的地址?
  • id


  • 如何查询 已有的各种变量?
  • locals


  • 如果 用一个变量a的值
  • 给另一个变量b 赋值
  • 是什么样的过程 呢??🤔



目录
相关文章
|
6天前
|
存储 索引 Python
Python小技巧:单下划线 '_' 原创
Python小技巧:单下划线 '_' 原创
20 3
|
26天前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
40 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
3月前
|
索引 Python
python语法错误赋值错误
【7月更文挑战第10天】
61 6
|
12天前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
17 4
|
7天前
|
Python
Python变量用法——单下划线变量名_ 原创
Python变量用法——单下划线变量名_ 原创
22 0
|
2月前
|
算法 Unix 程序员
[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
37 3
|
17天前
|
Unix 编译器 C语言
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ordinal_
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ord
14 0
|
2月前
|
程序员 开发工具 Python
[oeasy]python0030_动态控制断点_breakpoints_debug_调试
[oeasy]python0030_动态控制断点_breakpoints_debug_调试
24 2
|
2月前
|
数据处理 Python
python变量重新赋值
【8月更文挑战第4天】
70 6
|
2月前
|
程序员 Python
[oeasy]python0028_女性程序员_Eniac_girls_bug_Grace
回顾上次内容,我们了解到 `.py` 文件中的代码是按顺序一行行被解释执行的,可以使用 `pdb3 hello.py` 来调试程序。此外,我们探讨了“bug”这一术语的由来,它最早是在 1947 年由 Grace Murray Hopper 发现的一只真正的飞蛾所引起的计算机故障,从此“debugging”成了查找并修复程序错误的过程。早期的程序员大多为女性,因为她们通常更加细心且有耐心,这些特质对于检查错综复杂的线路和编程工作至关重要。编程与编织有着相似之处,都需要细致和有条理的操作。最后,我们认识到 bug 的存在是程序员工作的基础,没有 bug 就不需要程序员去修正它们。
37 3
下一篇
无影云桌面