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

news2024/12/22 18:04:30

变量定义

回忆上次内容

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战iOS App 重签名

熟悉iOS开发的同学都知道,iOS应用的上架流程主要分为以下几步: 创建开发者账号借助辅助工具appuploader创建证书,描述文件iTunes connect创建App打包IPA上传App Store等待审核在签名的流程中,有一个App重签名的步骤,主要针对的是一些大公司有多个App的情况,多个App一个申…

Linux设备驱动开发 - S3C2440时钟分析

By: fulinux E-mail: fulinuxsina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 系统框架图FLCK,HCLK,PCLK时钟源的选择 时钟体系流程流程分析驱动中的clk 系统框架图 2440是一个SOC(system on …

【网络编程】网络编程 和 Socket 套接字认识

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🎧一. 网络编程基础🎺1. 为什么需要网络编程?🎷2. 什么是网络编程🎸3. 网络编程中的基础概念 🎿二. So…

继续学习Easyx

画圆角矩形函数:roundrect,前四个参数是和矩形一样的,表示先画一个矩形,然后就是要画它的圆角了,要怎么画它的圆角?这里使用四个一样的椭圆来将它的四个角画出来,而在这个里面的椭圆不再需要四个…

MySQL8.0.33主从复制配置记录

目录 1. 下载2. 解压3.重命名4.创建存储数据文件5. 设置用户组并赋权6. 初始化MySQL7.配置文件8. 启动MySQL9. 设置软连接,并重启MySQL10. 登录并更改密码11. 开放远程连接12. 连接工具测试连接MySQL13. 开机自启配置14.从服务器配置15. 主库配置16. 从库配置17. 测…

功率MOS管烧毁,有这些原因

功率MOS管烧毁的原因以及相应的预防措施。在本文中,我将会介绍功率MOS管的基本结构、工作原理,以及可能导致功率MOS管烧毁的原因,并提供相应的解决方案。 1. 功率MOS管的基本结构和工作原理 功率MOS管是一种常用的功率电子器件,…

SpringBoot集成MyBatis-plus

SpringBoot集成MyBatis-plus 一、Mybatis-Plus简介1.简介2.特性3.官网及文档地址 二、入门案例1.开发环境2.创建数据库及表3.创建Springboot项目导入依赖4.配置application.yml5.启动类6.实体类7.添加mapper8.添加UserController9.日志配置 三、CURD1.BaseMapper2.通用Service …

事件主循环

一、事件主循环 1、事件处理主流程 libevent的事件循环主要是通过event_base_loop函数来完成,其主要的操作如下: 1、根据timer-heap中的事件最小超时时间,计算系统I/O demultiplexer的最大等待时间。例如:当底层使用的是Linux提供…

Android系统启动流程--system_server进程的启动流程

紧接上一篇zygote进程的启动流程,上一篇的结尾提到zygote进程中会fock出一个system_server进程,用于启动和管理Android系统中大部分的系统服务,本篇就来分析system_server进程是如何创建并运行的以及它都做了哪些重要的工作。 //文件路径&am…

Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通)

Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通) 文章目录 Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通)前言1. 创建、安装所用的包1.1 创建环境&#xff0c…

【深度学习】OCR文本识别

OCR文字识别定义 OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本资料进行扫描…

【数据结构】二叉树经典oj题

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…

B. Make Them Equal(Codeforces Round 673 (Div. 1))

传送门 题意: 思路: 首先判断是否能够操作达到目的:即所有的数都相等。 不能达到有两种情况: 1:所有数之和对n取余不等于0 2: 每个ai都是小于i的,例如n5, a[]{0,1,2,3,4}。因为每个数都是小于 i 的&am…

idea中的 debug 中小功能按钮都代表的意思

1.step over 步过----->一行一行的往下走,如果这一行中有方法那么不会进入该方法,直接一行一行往下走,除非你在该方法中打入断点 2.step into 步入—>可以进入方法内部,但是只能进入自己写的方法内部,而不会进入方法的类库中 3.Force step into 强制步入---->可以步…

编译livox ros driver2(ROS2、livox、rviz、ubuntu22.04)

1. 编译Livox-SDK2 官方地址:https://github.com/Livox-SDK/Livox-SDK2 执行一下命令: git clone https://github.com/Livox-SDK/Livox-SDK2.git cd ./Livox-SDK2/ mkdir build cd build cmake .. && make sudo make install 如上就安装完成了…

嵌入式【CPLD】5M570ZT100C5N、5M1270ZF256C5N、5M2210ZF256C5N采用独特的非易失性架构,低成本应用设计。

英特尔MAX V CPLD 采用独特的非易失性架构,提供低功耗片上功能,适用于以边缘为中心的应用。MAX V CPLD系列能够在单位空间中提供大量 I/O 和逻辑。这些设备还使用了低成本绿色封装技术,封装大小只有 20 毫米。 MAX V系列的关键应用包括&…

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&…

个推打造消息推送专项运营提升方案,数据驱动APP触达效果升级

“数智化运营”能力已成为企业的核心竞争力之一。借助数据和算法,构建完善的数智化运营体系,企业可增强用户洞察和科学决策能力,提高日常运营效率和投入产出比。近半年,个推精准把握行业客户的切实需求,将“数智化运营…

分析型数据库:MPP 数据库的概念、技术架构与未来发展方向

随着企业数据量的增多,为了配合企业的业务分析、商业智能等应用场景,从而驱动数据化的商业决策,分析型数据库诞生了。由于数据分析一般涉及的数据量大,计算复杂,分析型数据库一般都是采用大规模并行计算或者分布式计算…

css的属性选择器

文章目录 属性选择器的原理简单的语法介绍子串值(Substring value)属性选择器 CSS 属性选择器的最基本用法复杂一点的用法层叠选择多条件复合选择伪正则写法配合 **:not()** 伪类重写行内样式 组合用法:搭配伪元素提升用户体验角标功能属性选…