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

news/2024/3/29 13:11:30/文章来源:https://blog.csdn.net/overmind/article/details/130264335

变量定义

回忆上次内容

  • 变量 就是 能变的量
  • 上次研究了 变量标识符的 规则
    • 第一个字符 应该是 字母或下划线
    • 合法的标识符可以包括
      • 大小写字母
      • 数字
      • 下划线
  • 还研究了字符串(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102520.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录bingAI解答pyjwt参数和头部的问题

python jwt.encode()函数的参数是哪些 正在搜索: python jwt.encode()函数的参数 正在为你生成答案… 已收到消息. 在Python中,jwt.encode()函数的参数有三个:第一个是payload,主要用来存放有效的信息,例如用户名,过期…

PCL点云库(1) — 简介与数据类型

目录 1.1 简介 1.2 PCL安装 1.2.1 安装方法 1.2.2 测试程序 1.3 PCL数据类型 1.4 PCL中自定义point类型 1.4.1 增加自定义point的步骤 1.4.2 完整代码 1.1 简介 来源:PCL(点云库)_百度百科 PCL(Point Cloud Library&…

ZLMediaKit流媒体服务器 RTSP推流时候的堆栈

先直接看图 这是ffmpeg向流媒体服务器推流时候的堆栈 引入C 11之后 堆栈会显得特别繁复冗余 看起来 也没有 以前没有C11之前那样 简单明了 太复杂了 标记下 很多函数名字被我改了 因为原来的看起来 同名函数太多了 C11 和lambada 匿名函数 让看堆栈 成了地狱模式 断点断在…

Revit中如何绘制轴线?CAD图纸转轴网操作

一、如何用revit来制作这么一个简单的轴线呢? 01 、新建项目 绘制轴线,首先新建项目建筑样板 02 、轴线快捷键 绘制轴线的快捷键需要牢记,因为经常使用GR 03 、编辑轴线类型 当你画好第一条轴线,需要对轴线类型属性进行调节,一般…

基于tensorflow2.x的多GPU并行训练

由于最近训练transformer,在单卡上显存不够,另外一块卡上也无法加载,故尝试使用双卡并行的策略。将基本的流程、遇见的难题汇总在这里。分布策略解释 使用官方给出的tf.distribute.MirroredStrategy作为分布策略。这个策略通过如下的方式运行…

【架构设计】什么是CAP理论?

1、理论 CAP理论是指计算机分布式系统的三个核心特性:一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。 在CAP理论中,一致性指的是多个节点上的数据…

宝安日报:联诚发跨界创新“追光”十九载!

世界一流声光电智造一体化服务商、国家级高新技术企业、国家级专精特新“小巨人”企业、博士后创新实践基地、深圳自主创新百强企业……这些熠熠生辉的关键词,是位于宝安区航城街道的深圳市联诚发科技股份有限公司(以下简称:联诚发&#xff0…

KingSCADA3.8保姆级安装教程

大家好,我是雷工! 最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。 首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe ; 一、安装主程序 1、点击“…

AutoSAR内存映射

总目录链接>> AutoSAR入门和实战系列总目录 总目录链接>> AutoSAR BSW高阶配置系列总目录 文章目录 为了防止不必要的内存缺口(RAM 中未使用的空间),不同大小(8、16 和 32 位)的变量根据其大小映射到特…

工业树莓派远程I/O控制套装—更高效、更灵活、更便捷

一、背景 在完整的生产过程中,许多传感器设备和执行设备不完全安装在同一位置,大多分散部署在各个生产环节中。如果采用本地控制的方式,就需要用到多个控制器,但是成本较高,且不利于管理,所以最理想的解决…

Vue表单基本操作-收集表单数据

收集表单数据 使用vue中的v-model收集表单里面的数据,不同的表单元素配合v-model会有不同的写法和技巧 本次的表单元素包括:文本框,单选,多选,下拉框,文本域 编写表单元素 首先编写表单元素,…

ROS学习第三十七节——机器人运动控制以及里程计信息显示

https://download.csdn.net/download/qq_45685327/87719766 https://download.csdn.net/download/qq_45685327/87719873 gazebo 中已经可以正常显示机器人模型了,那么如何像在 rviz 中一样控制机器人运动呢?在此,需要涉及到ros中的组件: ros…

camunda的service task如何使用

在 Camunda 中,使用 Service Task 节点可以执行各种类型的业务逻辑,例如计算、数据转换、数据格式化等。在 Service Task 节点中,可以使用不同的编程语言来实现业务逻辑,例如 Java、JavaScript、Python 等。 下面是使用 Java 实现…

状态压缩DP-蒙德里安的梦想

题意 求把 NM 的棋盘分割成若干个 12 的长方形,有多少种方案。 例如当 N2,M4 时,共有 5 种方案。当 N2,M3 时,共有 3 种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行&#xff0…

这份最新阿里、腾讯、华为、字节等大厂的薪资和职级对比,你看过没?

互联网大厂新入职员工各职级薪资对应表(技术线)~ 最新阿里、腾讯、华为、字节跳动等大厂的薪资和职级对比 上面的表格不排除有很极端的收入情况,但至少能囊括一部分同职级的收入。这个表是“技术线”新入职员工的职级和薪资情况,非技术线(如产品、运营、…

【Linux】环境变量与进程优先级知识点

目录 环境变量1.基本概念2.常见环境变量3.我们写的程序和命令行指令有什么区别?4.自己的程序为什么要用 ./ 执行,而命令行指令可以直接执行?5.如何追加环境变量?6.Linux如何查看环境变量7.如何在代码层面获取环境变量main函数的参…

ubuntu 3060显卡驱动+cuda+cudnn+pytorch+pycharm+vscode

文章目录 运行环境:适用:思路:1.1 3060显卡驱动自动安装2.1 CUDA11.1.11)下载CUDA Toolkit 11.1 Update 1 Downloads2)contunue , 然后accept3)回车取消Driver安装,然后install4)添加环境变量5)确认是否安装成功 3.1 cudnn 8.1.11…

【Cartopy基础入门】如何更好的确定边界显示

原文作者:我辈理想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 Cartopy基础入门 【Cartopy基础入门】Cartopy的安装 【Cartopy基础入门】Geojson数据的加载 【Cartopy基础入门】如何更好的确定边界显示 文章目录 Ca…

【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

目录 开箱配置激活SDK环境测试cuda兼容性 开箱配置 更改盒子root用户密码: sudo passwd root(密码同为root) 切换到root用户身份: su root查看ssh的状态,没有返回说明没有启动 sudo ps -e|grep ssh此时说明ssh服务已启动。 更改ssh配置文…

java定位系统源码,通过独特的射频处理,配合先进的位置算法,可以有效计算出复杂环境下的人员与物品的活动信息

智慧工厂人员定位系统源码,区域电子围栏管控源码 文末获取联系! 在工厂日常生产活动中,企业很难精准地掌握访客和承包商等各类人员的实际位置,且无法实时监控巡检人员的巡检路线,当厂区发生灾情或其他异常状况时&#…