变量定义 回忆上次内容
  • 变量 就是 能变的量
  • 上次研究了 变量标识符的 规则
  • 第一个字符 应该是 字母或下划线
  • 合法的标识符可以包括
  • 大小写字母
  • 数字
  • 下划线
 
 
  • 还研究了字符串(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 赋值
  • 是什么样的过程 呢??
 


 

[oeasy]python0135_变量名与下划线_dunder_声明与赋值的更多相关文章

  1. 【已解决】SpringBoot + Mybatis-plus 实体类属性注解 @TableField 无法获取到数据库值(属性变量名带下划线)

    问题描述: 实体类变量的命名格式 如果采用的是 XX_XX带下划线的形式,那么在低版本的mybatis-plus是不支持和数据库映射的. 如果是单个单词不存在这个问题,如果出现多个单词,尽量采用驼峰式 ...

  2. geotools导入shp文件到Oracle数据库时表名带下划线的问题解决

    问题: 最近在做利用geotools导入shp文件到Oracle表中,发现一个问题Oracle表名带下划线时导入失败,问题代码行: dsOracle.getFeatureWriterAppend(or ...

  3. _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用

    _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用

  4. python变量前的单下划线(私有变量)和双下划线()

    1.单下划线 变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意 ...

  5. python 私有和保护成员变量如何实现?—— "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量;" 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量 ...

  6. Latex—IEEE Latex模板 期刊名带下划线的问题解决

    其实期刊名应该是斜体字的,但是有可能默认模板会导致斜体变下划线的问题,解决方法如下 引用包: \usepackage{ulem} %to strike the words 然后再在: \bibliog ...

  7. thinkphp如果表名有下划线需要用Model

    模型命名规范 ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范.首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义. ...

  8. Python中类的变量,一个下划线与两个下划线的区别

    形似       功能 __xx 这是私有变量, 只有内部可以访问,外部不可以访问.但是也不是一定不可以访问,只要以 _类名__xx样式就可以访问 .但最好不要这样做,养成良好编程习惯 _x 这是实例 ...

  9. vue里面的v-model的变量不要使用下划线

    遇到一个问题,就是如果变量名是text_right,的时候更改v-model的值,则text_right不会更新,如果改成textRight就会更新,目前还不知道原因,先记录下来

  10. ThinkPHP如果表名有下划线需要用Model应该怎么做?

    最近遇到一个问题,在用TP做系统的时候,我建立的表是 “tp_admin_user” 但是要用到的模型是 “AdminUserModel.model.class.php”,应该如何做? 解决方法: & ...

随机推荐

  1. uniapp uni-number-box组件 步长为1,还能输入小数思路分享

    正常情况,输入了步长为1,是无法在输入小数的.需求是要能输入一位小数,但如果直接步长设为0.1,又不能按1这样递增,输入数量上用起来肯定很麻烦. 于是我就想了一个折中方法,步长设为:1.01,然后值改 ...

  2. C# 方块热力图

      这张图右侧,0 3 6...... 30表示每个数字出现的次数,左侧就是每个数字出现次数的方块颜色图. 具体的思路是,找两个颜色 渐变的画出右侧的色条. 计算所有数字的最大最小次数,然后用他们色条 ...

  3. Yii框架Ar操作

    1.$admin=Admin::model()->findAll($condition,$params);        该方法是根据一个条件查询一个集合,如:  findAll("u ...

  4. NOIP模拟90(多校23)

    T1 回文 解题思路 原来 \(n^3\) 可以过 500 ... 先枚举一下路径长度,对于同一路径长度点数最多是 \(n\) 个,我们可以接着枚举从 \((n,m)\) 出发的路径长度相同的点. 然 ...

  5. 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线

    这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2.3个实现思路,最终实测这个实现方式目前来说最为合适了. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 ...

  6. 一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署)

    一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署) 本文将简要简要介绍本人自建NAS的完整配置,截至发文此NAS已经连续良好运行一年,应当说具有良好的稳定性. 本文所述配置包含洋垃圾成分, ...

  7. itest(爱测试) 开源接口测试,敏捷测试管理平台10.2.3发布

    一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...

  8. 剑指Offer-57.二叉树的下一个结点(C++/Java)

    题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 二叉树的中序遍历是左根右,所以如果一个结点的右子 ...

  9. SpringBoot启动报错:Parameter 0 of method hmset in com.qcby.rbac.util.RedisUtils required a bean of type

    SpringBoot启动报错,报错信息如下: 报错是由于A类中定义了含参数的构造函数,Spring自动构造和注入时未为该Bean传入参数,引起报错. 查了很多资料,最后发现,我是因为注释的时候没有把@ ...

  10. ISO pod 使用

    pod 安装 相关依赖包 新建podfile 文件 pod init 编辑podfile文件添加第三方库 // pod '第三方依赖库名', '版本号' pod 'SDWebImageSwiftUI' ...