欢迎光临散文网 会员登陆 & 注册

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

2023-04-20 19:13 作者:oeasy  | 我要投稿

变量定义

回忆上次内容

  • 变量 就是 能变的量

  • 上次研究了 变量标识符的 规则

    • 大小写字母

    • 数字

    • 下划线

    • 第一个字符 应该是 字母或下划线

    • 合法的标识符可以包括

    • 还研究了字符串(str)的函数

      • 是否为合法标识符

      • isidentifier

      • 查询字符串

    • 最后发现

      • 这个isidentifier函数有时候不好使?

    • 这怎么理解呢??🤔

    翻看文档

    • and 属于关键字

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

    判断是否为关键字

    • 关键字 是不能作为标识符的

    • dir()查询模块的时候

      • 经常会看到下划线

    • 这些下划线如何理解?

    下划线

    • from module import * 时

      • 不被其他模块引用

      • 以下划线开头的变量

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

    内部变量

    • 除非明确点名

    • 指清名字 _pi

      • 是可以导入的

    • 不点名不能用吗?

    不点名

    • from random import *

      • 无法导入_e

    上次的值

    • 在游乐场里

      • _下划线 意味着上次的值

    后面的下划线

    • 在后面加上下划线

      • 一般是为了区分已经有的标识符

    • 使用max

      • 会把max函数 屏蔽掉

    • 使用max_

      • 不会屏蔽 max函数

    两端双下划线(dunder)

    • 系统定义的标识符

      • 模块名

      • 函数名

      • 变量名

    • dunder变量都是有用意的

      • 不要轻易破坏

    前有双下划线

    • 类里面的私有名

      • 无法直接存取

    • 目的是

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

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

    细节

    • o 两边并不加引号

      • 如果加了双引号 就是字符串了

      • 因为 这里的 o 是 变量标识符

      • 而不是 字符串

    • 在等号两端 都保留 有一个空格

      • 可是 为什么要 加空格呢?

    可读性

    • 增加文档的可读性

      • 不会 影响程序的执行速度

    • 这两句话从何说起

    加空格的原因

    • 这两句话来自于python之禅

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

    locals()

    • 查询本地变量

    • 有一个内置的函数叫做 locals

    • 可以查询关于 locals 的帮助

    • 返回的是一个包含当前域中所有变量的字典

    • 声明和赋值都使用等号

      • 声明并赋值 变量o 之后

      • 变量o 真的在内存里有位置了么?

    • 我们来看看

    具体位置

    • id函数是什么意思?

      • help(id)

    • id返回 对象o的标识符

      • 但是如果 我们给变量新赋 一个值

      • o 确实在内存中 有了位置

    • 那么 存储变量的位置

      • 还是那个 内存地址 么?

    实践

    • 虽然 a这个变量名 没有变

      • 但是 id(a)变了

    • 也就是说

      • 在内存中的位置 变了

      • a这个容器的 内存位置没变

      • 但是a所指向的 变量位置

    • 两次赋值 都是STORE到a这个NAME里面

      • 有什么区别吗?

      • 第二次赋值 和 第一次赋值

    区别

    • 变量的声明和赋值究竟有什么不同

      • 声明和赋值是同时完成的

      • 第一次赋值时

    • 如果是 第二次赋值 呢?

    纯赋值

    • 声明了之后

      • 再有 等号赋值 就是 第二次赋值

    • 是 纯赋值

      • 没有声明新的变量

    总结

    • 这次 了解了isidentifier的细节

      • 关于 关键字

      • 关于 下划线

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

      • id

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

      • locals

    • 如果 用一个变量a的值

      • 给另一个变量b 赋值

      • 是什么样的过程 呢??🤔

    • 我们下次再说!👋

    • 蓝桥->https://www.lanqiao.cn/courses/3584

    • github->https://github.com/overmind1980/oeasy-python-tutorial

    • gitee->https://gitee.com/overmind1980/oeasypython


    [oeasy]python0135_变量名与下划线_dunder_声明与赋值的评论 (共 条)

    分享到微博请遵守国家法律