首页 > 其他分享 >12 - 变量与对象与object, type, class

12 - 变量与对象与object, type, class

时间:2024-02-04 15:35:16浏览次数:34  
标签:12 变量 对象 object print type name

变量与对象

参考资料:
菜鸟教程:Python3 基本数据类型
Python 文档:数据模型 - 对象、值与类型
RealPython: Python 中的变量与对象
知乎:如何理解python中一切皆对象呢?看type,object,class的关系


变量(variable)的赋值(assignment)与删除(deletion)

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号 = 用来给变量赋值, 等号 = 运算符左边是一个变量名, 等号 = 运算符右边是存储在变量中的值。

del 关键字加变量名可以删除一个或多个变量。(在 Jupyter Notebook 与 代码内存优化上有用)

例如:

#!/usr/bin/env python3

counter = 100              # 整型变量
miles   = 1000.0           # 浮点型变量
name    = "总之先找时光机!"  # 字符串

print (counter)
print (miles)
print (name)

del name, miles
print(name)	# 会报错,因为name已被删除

执行以上程序会输出如下结果:

100
1000.0
总之先找时光机!
Traceback (most recent call last):
  File "C:\Users\dongw\Desktop\test.py", line 12, in <module>
    print(name)
NameError: name 'name' is not defined

变量与对象(object)

在 Python 中,变量的概念很纯粹,变量就是一个对象的引用(reference)。对象是存储在内存的数据。

变量本身没有“类型(type)”,但被引用的对象有类型。

被引用的对象有一个标识号(identity),可以理解成内存地址(memory address)。

  • 对象(object) 是存储在内存某处的数据。
    • 每个对象都有一个内存地址、一个类型和一个值(value)。
  • 变量(variable) 则是对 对象引用(reference)

获取变量标识号(内存地址)的方法 id()

在 Python 中,获取变量内存地址的方法为:id()
如:

>>>a = 1
>>>id(a)
140718160995112

值得注意的是,内存地址每次运行后都可能不一样。


获取变量类型的方法 type()

在 Python 中,获取变量类型的方法为: type()
如:

>>>a = 5; print(type(a))
<class 'int'>
>>>a = 5.0; print(type(a))
<class 'float'>

object、type、class之间的关系

笔者感觉大部分开发者(如笔者自己)不需要了解这些细枝末节。

笔者至今也没有在开发过程中触及到这三者的边界,因此不再做更详尽的记录了。

拓展阅读:如何理解python中一切皆对象呢?看type,object,class的关系


标签:12,变量,对象,object,print,type,name
From: https://www.cnblogs.com/wanderoff-night/p/18006310

相关文章

  • Object.assign详解(对象的浅拷贝以及合并)
    Object.assign详解 一、Object.assign是什么?首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的?Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说,就是Object.assign()是对象的静态方法,可以用......
  • 2024年1月玩客云刷Armbian_20.11_Aml-s812_5.9.0-支持USB-WIFI最终完美版记录
    固件:https://www.right.com.cn/FORUM/thread-4103842-1-1.html写入emmc后aptupdateaptupgradee用armbian-config连接wifi,设置WiFiIP地址安装omv5(需要科学)参照:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=3049724&highlight=omv51.安装基础依赖(该步骤......
  • (12)动态生成菜单及绑定自定义事件
    varAddCollctMenus:ArrayOfTMenuItem;//动态菜单 procedureTForm1.Button5Click(Sender:TObject);Vari,AddCollctMenuCount:Integer;BeginAddCollctMenuCount:=Length(AddCollctMenus)-1;Fori:=0ToAddCollctMenuCountDoBeginFreeAndNil......
  • CH9120 TFTP使用详解
    一、TFTP简介:TFTP是基于UDP应用层的简单的文件传输协议,端口号为69,TFTP协议主要应用于网络引导、配置文件传输等场景。二、报文介绍:TFTP有四种数据包格式,分别是读/写请求包、文件数据包、回应包和错误信息包。读/写请求包操作码,它的值为1表示读操作,2表示写操作;文件名,它是一......
  • 0129-0203部分校赛题解复盘
    vj第一场A题https://codeforces.com/gym/103480/problem/A该题让我们可以从回文串的特点入手,即两个相同的字母便可增加长度2,所以并不用思考该回文串要如何排序出来,而是看有多少对相同的字母,使用map<char,int>来记录字母出现的次数,再计算可以除以2的次数即可。点击查看代码#i......
  • hdu 1312 Red and Black (BFS模板题)
    Problem-1312(hdu.edu.cn)BFS模板题#include<iostream>#include<queue>usingnamespacestd;typedeflonglongll;constintINF=0x3f3f3f3f;intwx,hy,num;charroom[25][25];#defineCHECK(x,y)(x>=0&&x<wx&&y>=0&&am......
  • hdu1240 Asteroids! (三维BFS)
    Problem-1240(hdu.edu.cn)三维的BFS,存在一个坐标点的变换,即输入的是(y,z,x),进行转换即可#include<iostream>#include<queue>#include<cstring>usingnamespacestd;intn,x1,y1,z1,x2,y2,z2,flag,vis[20][20][20];charroom[20][20][20];structnode{int......
  • AWR1243+DCA100——二维孔径
    利用AWR1243,通过二维滑轨的机械扫描实现二维平面孔径,可以获取目标场景的三维信息,实现3D成像(水平-垂直-深度)。概念图如下:参考:[1]Yanik.Simplified-2D-mmWave-Imaging](https://github.com/meminyanik/Simplified-2D-mmWave-Imaging)[2]YanikM,TorlakM.Millimeter-wave......
  • 12. C++ 类其实也是一种作用域
    C++类其实也是一种作用域类其实也是一种作用域,每个类都会定义它自己的作用域。在类的作用域之外,普通的成员只能通过对象(可以是对象本身,也可以是对象指针或对象引用)来访问,静态成员既可以通过对象访问,又可以通过类访问,在类内用typedef定义的类型只能通过类来访问。下面的例子使......
  • 12个RAG常见痛点及解决方案
    Barnett等人的论文《SevenFailurePointsWhenEngineeringaRetrievalAugmentedGenerationSystem》介绍了RAG的七个痛点,我们将其延申扩展再补充开发RAG流程中常遇到的另外五个常见问题。并且将深入研究这些RAG痛点的解决方案,这样我们能够更好地在日常的RAG开发中避免和解决......