[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 赋值
  • 是什么样的过程 呢??🤔



目录
相关文章
|
2月前
|
存储 索引 Python
Python小技巧:单下划线 '_' 原创
Python小技巧:单下划线 '_' 原创
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
60 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
11天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
24 4
|
18天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
16 1
|
4天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
6 0
|
30天前
|
存储 Java 编译器
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
这篇文章是关于Python编程语言中变量命名规则、基本数据类型、算数运算符、比较运算符、逻辑运算符、赋值运算符以及格式化输出与输入的详细教程。
18 0
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
20 3
|
25天前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
19 0
|
2月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
28 4
|
1月前
|
API 开发者 索引
Python中的省略号(Ellipsis)赋值方式
在Python中,省略号(`...`)是一种特殊对象,称为Ellipsis,虽不常用但在特定场景下非常实用,如函数占位、未实现方法示例及NumPy数组处理。本文通过示例介绍`a = ...`的用法。省略号类似于`None`,可用作代码结构的占位符,保持代码完整性和可读性,同时在API设计中标识待实现的方法。特别是在NumPy中,省略号用于表示多维数组的剩余维度,简化数组操作,提高代码灵活性和可读性。掌握这一技巧有助于提升Python编程能力。
下一篇
无影云桌面