[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _

简介: 本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。

变量名标识符

回忆上次内容

  • 上次我们 了解了 id 函数
  • id函数 可以得到
  • 变量对象 所引用的 唯一内存地址

s1 = "oeasy"

A = 10

  • 现在都是
  • 用 字面量(literal)
  • 给变量 赋值

  • 可以
  • 变量
  • 给变量 赋值 吗? 🤔

变量赋值

s1 = "oeasy"

s2 = s1

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

  • 将s1的值
  • 赋给s2
  • s2 所指向的 内存地址
  • 就是s1 所在的内存地址

图解

  • 地址是 同一个
  • 两个变量 都指向了 这个 地址
  • 完成了 变量的复制

  • 为什么要
  • 用 变量
  • 一个变量 赋值 呢?

指向

  • 比如 要让
  • 香蕉 和 苹果 价格相同

  • 可以 将 苹果的价格
  • 赋给 香蕉
  • 价格就一样
  • 如果 此时
  • 对s2 再赋值 呢?

重新赋值

s1 = "oeasy"

s2 = s1

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

s2 = "o2z"

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

  • 将 'o2z' 赋给 s2 后
  • s2引用的 内存地址
  • s1引用的

再图解

  • 用变量 给变量赋值
  • 就和 用字面量 给变量赋值一样

  • 变量复制 真的很神奇!!!
  • 也许 您 问了
  • 这 神奇在 哪儿呢?🥸

自我复制

  • 生命的基本特征
  • 就是 自我复制

  • 变量 的 自我复制
  • 程序 的 自我复制
  • 再到 硬件载具 的 自我复制
  • 机器 逐渐 具有生命
  • 变成 具身智能
  • Embodied Artificial Intelligence

速度

  • 而且 通过软件
  • 完成复制
  • 速度 比 生物快太多了
  • 很快就会有
  • 100个副本
  • 可以干活了

  • 甚至 矩阵
  • 完成 交互和融合
  • 速度惊人

声明变量

  • 声明 a 是个 变量
  • 并赋值为1
  • a 是个
  • 数字类型 变量
  • 引用地址
  • 9788960
  • 通过 id(a)得到
  • 地址里
  • 存的值 是1

  • 声明 b变量
  • 并且把 a所指向变量 的 地址
  • 赋给 容器b
  • 变量b
  • 类型 与a相同
  • 引用地址 也与a相同
  • a 和 b
  • 引用 一个 地址
  • 此地址 存的值 是1
  • 如果 把2
  • 再赋给a 呢?

重新赋值

  • 对a重新赋值后
  • a 引用了 地址 (9788992)
  • b 依然引用 地址

  • 可以 对两个变量
  • 一起 赋值 吗?

试一试

  • 动手试一试

a = b = 3

  • 可以吗?

连等赋值

  • 一行之中
  • 可以给
  • 多个变量赋值

  • 这就相当于 两次赋值
  1. 先算边的等号
  • b = 3
  • 将 3 赋给 b
  1. 再算边的等号
  • a = b
  • 将 b 赋给 a
  • 个等号
  • 次 赋值
  • 如果 所赋的值 很大 呢?

两个等号

  • 这次
  • 所赋的值 很大
  • 不在 常用地址范围 中
  • 属于 边远地址
  • 但是
  • a和b 所指向的地址
  • 仍然 是 同一个地址

  • 逗号分隔
  • 输出两个变量的方式叫做
  • pack
  • 打包

  • 能否 给
  • 打好包 两个 变量
  • 不同的 值 ?

同一行 赋不同值

  • 在 等号加上逗号
  • 变量名 加上逗号
  • 要赋的值 加上 逗号

  • 这种情况 要经过
  • unpack
  • 解包过程
  • 将(4, 5)进行解包
  • 解成 4和5
  • 分别赋给 a和b

  • 除了 变量
  • 导入的模块 地址吗?

模块类型

import time

type(time)

  • time的类型是
  • module
  • 模块

  • 模块 也有地址吗?

模块地址

  • import time之后
  • 观察 id(time)

id(time)

  • 模块
  • module
  • 模块 也有自己的地址

  • 除了 变量 和 模块
  • 函数(function) 有 地址 吗?

函数 地址

id(print)

id(ord)

id(chr)

id(id)

  • 函数 也有 地址
  • 唯一标识

  • 还有什么也有地址吗?

更多

id(range)

id(type)

id(int)

id(str)

  • 为什么 这哥几个
  • 数值 这么小?

  • 他们 属于 什么类型 呢?

class 类型

type(type)

type(int)

type(str)

type(range)

  • 他们本身就是
  • 类型
  • type

  • 回忆一下
  • 这个 range怎么
  • 输出ASCII码表?

黑暗森林

for num in range(0, 128):

   if num % 8 == 0:

       print()

   print(chr(num), end="\t")

  • 遍历了ascii码表

总结

  • 这次我们 了解了
  • 变量赋值
  • 连等赋值
  • 解包赋值
  • 所有对象
  • 变量 variable
  • 模块 module
  • 函数 function
  • 类 class
  • 都有 自己所属的 类型
  • 也都 在内存中 引用 唯一位置(id)
  • 这些数字 组成了 python系统

  • 现在 已经声明了 哪些变量 ?🤔
  • 可以 吗?🤔
  • 我们下次再说!👋
相关文章
|
7天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
4天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
30天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
112 80
|
1月前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
116 69
|
1月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
117 68
|
4天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
32 9
|
9天前
|
C语言 Python
[oeasy]python058_一句话让python崩了
本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
21 10
|
19天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
37 14
|
11天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
24 3
|
14天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
16 1