首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你如何获得变量的名称,因为它在声明中是物理输入的?

要获取变量的名称,可以使用Python的inspect模块。inspect模块提供了许多方法来获取有关Python对象的信息,例如变量名称、函数名称、类名称等。

以下是一个示例代码,演示如何使用inspect模块获取变量名称:

代码语言:python
复制
import inspect

def get_variable_name(variable):
    callers_local_vars = inspect.currentframe().f_back.f_locals.items()
    return [var_name for var_name, var_val in callers_local_vars if var_val is variable]

x = 10
variable_name = get_variable_name(x)
print(variable_name)

在这个示例中,我们定义了一个名为get_variable_name的函数,它接受一个变量作为参数,并返回该变量的名称。我们使用inspect.currentframe().f_back.f_locals.items()方法获取调用该函数的代码块中所有局部变量的名称和值。然后,我们遍历这些变量,并检查它们是否与传递的变量相同。如果找到相同的变量,我们将返回该变量的名称。

在这个示例中,我们定义了一个名为x的变量,并将其值设置为10。然后,我们调用get_variable_name函数,并将x作为参数传递。最后,我们打印出变量名称。输出应该是['x']

需要注意的是,这种方法只能在局部作用域中查找变量名称。如果变量在全局作用域中定义,则无法使用此方法获取变量名称。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

第1天--文本与变量

零、今日目标 我们在开发程序时候都会处理大量数据,这些数据有些硬编码(直接写在程序),有些通过输入输入可能来自键盘、互联网等)得到。...那么这些通过输入得到输入我们如果像使用它的话就必须将其存储在内存,C# 为我们提供了一种叫做变量存储结构,方便我们在内存存取数据。...; 何为隐式类型变量,以及如何使用隐式类型变量。...何为变量 变量,从字面上来说就是变化量,分配给计算机内存标签,通过它我们可以很轻松操作内存存储数据,它在自身生存周期内可以改变其存储数据。 2....取值时我们只需调用变量名称即可,如下代码: int age=1; Console.WriteLine(age); 运行上述代码获得如下输出: 赋值又分为声明变量同时赋值和声明变量后赋值两种,代码如下

68700

golang学习笔记3:常量与变量

与各种类型数字型变量相比,无需担心常量之间类型转换问题,因为它们都是非常理想数字。...不过需要注意,当常量赋值给一个精度过小数字型变量时,可能会因为无法正确表达常量所代表数值而导致溢出,这会在编译期间就引发错误。...需要注意,Go 和许多编程语言不同,它在声明变量时将变量类型放在变量名称之后。Go 为什么要选择这么做呢?...尽管变量标识符必须唯一,但可以在某个代码块内层代码块中使用相同名称变量,则此时外部同名变量将会暂时隐藏(结束内部代码块执行后隐藏外部同名变量又会出现,而内部同名变量则被释放),任何操作都只会影响内部代码块局部变量...runtime 包在运行时获取所在操作系统类型,以及如何通过 os 包函数 os.Getenv() 来获取环境变量值,并保存到 string 类型局部变量 path

52010

C++extern关键字知识点

4)、extern用在变量声明中常常有这样一个作用,在*.c文件声明了一个全局变量,这个全局变量如果要被引用,就放在*.h并用extern来声明。...但是在运行过程因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决?   ..."123456"这个字符串,但是却不能在test2.obj里面找到,这是因为g_str整个工程全局变量,在内存只存在一份,test2.obj这个编译单元不需要再有一份了,不然会在连接时报告重复定义这个错误..."123456",同时也可以在test2.obj中找到它们,它们之所以可以连接成功而没有报重复定义错误是因为虽然它们有相同内容,但是存储物理地址并不一样,就像是两个不同变量赋了相同值一样,而这两个变量分别作用于它们各自编译单元...,就会发现两个编译单元g_str地址并不相同,因为在一处修改了它,所以编译器被强行恢复内存原貌,在内存存在了两份拷贝给两个模块变量使用。

98340

金九银十: 50 个JS 必须懂面试题为助力

var x = []; var y = [1, 2, 3, 4, 5]; 问题9:JS 命名函数是什么以及如何定义: 命名函数在定义后立即声明名称,可以使用function关键字定义: function...一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS参数对象是什么&如何获得传递给函数参数类型 JS 变量arguments表示传递给函数参数。...变量作用域程序定义它区域,JS变量只有两个作用域: 全局变量 - 全局变量具有全局作用域,这意味着它在JS代码任何位置都可见。...undeclared变量程序不存在且未声明变量。 如果程序尝试读取未声明变量值,则会遇到运行时错误。...咱们应该小心使用这种清空数组方法,因为如果从另一个变量引用了这个数组,那么原始引用数组将保持不变。

6.5K31

Threejs进阶之十五:在Thereejs 使用自定义shader

实现上述效果;后面代码中会进行详细分析; 这里我们先介绍下基础知识 什么 Shader Shader(着色器)一种在图形处理单元(GPU)上执行程序,它定义了如何根据输入数据(例如顶点位置,纹理坐标等...片元也可以理解为 “像素片段”,因为它们不能完全匹配显示设备上物理像素,而是在设备上渲染为多个物理像素。...uniforms属性 Uniform变量着色器中一个全局变量,其值可以由Three.jsJavaScript代码设置。...用于在顶点着色器和片元着色器之间传递数据,它在着色器中被声明为一个uniform变量,可以包含标量、向量、矩阵等类型。在构造函数,可以通过设置uniforms属性来传入需要在着色器中使用数据。...needsUpdate 指示uniform是否需要在下一帧更新。 可以在自定义着色器代码通过直接使用uniform变量名称来引用它们。

75640

50 个JS 必须懂面试题为助力金九银十

var x = []; var y = [1, 2, 3, 4, 5]; 问题9:JS 命名函数是什么以及如何定义: 命名函数在定义后立即声明名称,可以使用function关键字定义: function...一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS参数对象是什么&如何获得传递给函数参数类型 JS 变量arguments表示传递给函数参数。...变量作用域程序定义它区域,JS变量只有两个作用域: 全局变量 - 全局变量具有全局作用域,这意味着它在JS代码任何位置都可见。...undeclared变量程序不存在且未声明变量。 如果程序尝试读取未声明变量值,则会遇到运行时错误。...咱们应该小心使用这种清空数组方法,因为如果从另一个变量引用了这个数组,那么原始引用数组将保持不变。

4.4K30

Arch Linux 软件包制作入门 | Linux 中国

获得 PKGBUILD 文件后,只需在包含 PKGBUILD 目录运行 `makepkg',就可以得到一个可安装软件包了。...image.png 在本教程将会看到我刚刚制作软件包,它在运行时打印出 “Hello World!”。 image.png 准备 为了继续学习本教程,需要创建几个文件。...要设置包名称,请在 PKGBUILD 输入以下内容: pkgname="hello-world" 要设置一个不同软件包名称,用你软件包名称替换 hello-world。...arch 这个变量设置软件包所兼容 硬件架构。如果不明白什么架构,那也没关系,因为在大多数情况下,这个变量几乎无用。...如何获得这个值信息可以在 Arch 维基关于 PKGBUILD 文章 中找到。

2.7K50

理解 JavaScript undefined

如果还不熟悉 JavaScript 变量和属性区别(包括内部 VariableObject),那么最好先去阅读一下我上一篇文章。 什么 undefined?...但是 foo 不是一个未声明变量吗? 技术上不是的。虽然我们有时会发现 “undeclared variable” 一个错误诊断时有用术语,但实际上,在变量声明之前不是变量。...如果代码写得够好的话,其实很少需要这样做。我们已经看到,在典型用法,只有一种方法可以获得不可解析引用:使用既不是属性也不是变量仅在语法上正确引用。...结论,下面的代码片段在浏览器运行时很可能会抛出 ReferenceError: console.log(new Date()); 如何对可能不存在变量进行编码?...&& console.log(new Date()); 实际上,只需要检查全局上下文中是否存在变量(函数存在其他执行上下文,而且可以控制自己函数存在哪些变量)。

96620

C++ 解引用与函数基础:内存地址、调用方法及声明

但是,也可以使用指针来获取变量值,这可以通过使用 * 运算符(解引用运算符)来实现:string food = "Pizza"; // 变量声明string* ptr = &food; // 指针声明...;需要注意,符号 * 在这里可能会让人感到困惑,因为它在我们代码中有两种不同作用:在声明中使用时(string* ptr),它创建一个指针变量。...在非声明中使用时,它作为解引用运算符。修改指针值可以改变指针值。...在 C++ ,函数参数默认输入参数。要声明输出参数或输入输出参数,需要使用引用或指针。函数返回值函数可以返回一个值给调用者。...函数作用域函数作用域指函数内变量和函数名在程序可见范围。函数内变量和函数名只在该函数内可见,在其他函数不可见。

7100

SAE J1939 – 简短介绍

应用层 应用层相关文档SAE J1939/71描述了实际数据(参数或具有数值范围网络变量,分辨率,物理单元和传输类型)。每个报文都具有独特编码(参数组号:PGN)。...由于网络管理可视为能够达到硬件(第1层)独立单元,它在图表右侧作为独立功能块。 设备名称,报文结构,地址声明(J1939/81) 设备地址 电子控制单元(ECU)软件控制器应用(CA)。...地址声明 在CA使用地址前,它必须在网络对该地址进行声明;这个过程叫做”地址声明” (ACL)。 在此,使用独一无二设备名称来解决地址分配冲突:数值越小,优先级越高。...图表:地址声明过程 如果网络上另一个CA已经使用了相同地址,这就产生了地址冲突。设备名称具有更高优先级CA就获得该地址。...这取决于CA接下来如何工作”地址能力” : 如果CA具有”非自配置”地址能力,就必须发送带有“源地址”0(254)”“不能声明地址”PGN。

1.9K10

如何编写 Python 程序

如何编写 Python 程序 从今以后,保存和运行 Python 程序标准步骤如下: 对于 PyCharm 用户 打开 PyCharm。 以给定文件名创建新文件。 输入案例给出代码。...对于其他编辑器用户 打开选择编辑器。 输入案例给出代码。 以给定文件名将其保存成文件。 在解释器通过命令 python program.py 来运行程序。...它是如何工作 下面这一程序工作原理。首先,我们使用赋值运算符(=)将字面常量数值 5 赋值给变量 i。...这一行被称之为声明语句(Statement)因为其工作正是声明一些在这一情况下应当完成事情:我们将变量名 i 与值 5 相连接。...逻辑行与物理行 所谓物理行(Physical Line)在编写程序时 所看到 内容。所谓逻辑行(Logical Line) Python 所看到 单个语句。

2K20

Python学习笔记:命名空间和作用域

每当指定其中一个内置函数时,Python将搜索直到它在内置作用域命名空间中找到函数名称。...注意,虽然我们在上面的例子已经看到可以引用更高级别作用域中名称,但应该避免使用这种对象引用方法。因为变量可以在任何更高级别的作用域中找到,所以在较小作用域内可能存在关于引用哪个变量模糊性。...建议只有传递给函数输入变量才能在函数中使用,并假设只有函数返回变量才能在主程序中使用。 本地作用域和外围作用域 本地作用域程序“当前”级别的命名空间,这是在函数、类或导入模块而不是主模块。...重新定义作用域语句 下面介绍如何手动将变量赋值给不同命名空间,能够将已定义变量作用域移到其本地命名空间之外可能很重要。例如,在上节最后一个代码块,我们无法访问在最小作用域内赋值为5x变量。...在作用域之间传递变量正确方法通过输入元组将对象传递给函数,并通过函数return调用返回值。但是,在某些情况下执行此操作可能很棘手。

88140

python 基础笔记(

如果它与我们所期望不一样,我们就得调试我们程序,即消除程序 瑕疵 (错误)。 它如何工作 接下来将看到我们如何把 设计 一步一步地转换为 代码 。...我们使用了os和time模块,所以我们输入它们。然后,我们在source列表中指定需要备份文件和目录。目标目录我们想要存储备份文件地方,它由target_dir变量指定。...zip归档名称是目前日期和时间,我们使用time.strftime()函数获得。它还包括.zip扩展名,将被保存在target_dir目录。...正常情况下,应该回到设计环节或者调试程序。 版本二 第一个版本脚本可以工作。然而,我们可以对它做些优化以便让它在我们日常工作变得更好。这称为软件维护环节。...另外一个优势文件名长度也可以变短。还有一个优势采用各自独立文件夹可以帮助你方便地检验是否在每一天创建了备份,因为只有在你创建了备份,才会出现那天目录。

57810

Java_面向对象_04

接下来,重点分析一下他们四个特点 抽象 面向对象强调按照人类思维方式中去模拟现实世界物理存在,将客观事物,抽象成各种对象组合,管理抽象一个有效办法就是层次分类,允许程序将一个复杂系统分解成多个简单部件进行处理...,如何分解?...封装 封装面向对象技术屏蔽信息一种机制, 它在程序中将对象状态和行为封装成为一个完整,结构高度集中整体,对外有明确功能,接口单一通过,可在各种环境下独立运行单元,目的只通过一个公用接口和消息其他对象进行通讯...继承有单继承和多继承两种,单继承类层次树状结构,多继承网状结构,因为他有多个父类,在java,除了object类外,其它类都有父类,在java只支持单继承,继承要通过接口实现。...对一些类对象具有相同属性值,可利用static来声明,没有被static 修饰变量实例变量| 访问类变量: 类名.类变量名 访问成员变量 对象名.成员变量名 成员方法

40230

使用 Swift 创建简单二维码扫描应用

应用名称的话,输入 “CDBarcodes + 名字”,或者其他喜欢名字。...AVCaptureSession 会管理从摄像头获取数据——将输入数据转为可以使用输出 AVCaptureDevice 表示物理设备和其他属性。...之后我们将创建一个输入对象(input object),然后将其加入到 AVCaptureSession 。 ? 如果设备没有摄像头,那就无法扫描条码。我们添加了一个处理失败场景方法。...数据服务 在 DataService.swift ,我们将引入 Alamofire 和 SwiftyJSON。 接下来,声明一些变量来存储我们从 Discogs 获得原始数据。...我们分别把得到名称和年份原始数据赋值给ALBUM_FROM_DISCOGS 和 YEAR_FROM_DISCOGS,之后会使用这些变量来创建专辑对象。

1.9K20

如何用python制作3d游戏_【教程】12个步骤让快速学会制作3D游戏

(保存场景),在文件夹以[项目名称]- Assets形式保存场景。Assets一个为了存储场景和脚本而事先创建好文件夹。...声明变量类型为float(浮点数)并命名为speed,结果如下: publicfloat speed; 分号每行代码结束标志,如果没有在每一行末尾写分号的话程序就会报错,所以一定不要忘记哦!...我将在稍后介绍如何在Unity编辑器调整速度变量。 保存CSharp文件,并切换回界面。...我们需要做两个声明:一个记录得分用变量,另一个在场景视图里显示得分GUI text(图形用户界面文本)。...在周围布置这些hazards,然后试着开始游戏! 【版权声明】 原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。

3.3K10

存储类别、链接和内存管理(一)--面试遇到过static关键字吗?

相信学完本期内容就会回答了~ 一、存储类别 首先我们来了解下存储类别。 从硬件方面看,每个变量存储值都占用一定物理内存空间,C语言中把这样一块内存称为对象。...但是*pc不是可修改左值,因为*pc指定了储存‘h’字符数据对象。 可以用存储期描述对象,所谓存储期指对象在内存中保留了多长时间。 标识符用于访问对象,使用作用域和链接描述标识符。...一 些程序员把“内部链接文件作用域”简称为“文件作用域”,把“外部链接文件作用域”简称为“全局作用域”或“程序作用域”。 那么如何知道文件作用域内部链接还是外部链接呢?...具有线程 存储期对象,从被声明时到线程结束一直存在。以关键字_Thread_local声 明一个对象时,每个线程都获得变量私有备份。 块作用域变量通常都具有自动存储期。...为了创建这样变量,要把变量声明在块,且在声明前面加上关键字static。 总的来说:static关键字作用就是限制作用域和存储期。

35420

React基础篇 - 02.JSX 简介

JSX 简介 请观察下面的变量声明: const element = Hello, world!; 这种看起来可能有些奇怪标签语法既不是字符串也不是HTML。...在下一个章节里面我们会详细介绍元素如何被渲染出来,接下来呢,我们先来看看 JSX 基本使用方法。... ); 警告: 因为 JSX 特性更接近 JavaScript 而不是 HTML , 所以 React DOM 使用 camelCase 小驼峰命名 来定义属性名称,...可以将其视为你想要在屏幕上看到东西。React 通过读取这些对象来构建 DOM 并保持数据内容一致。 我们将在下一个章节当中介绍更多有关 React 元素 如何渲染成 DOM 内容。...我们不需要一定使用 JSX,但它有以下优点: JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。 它是类型安全,在编译过程中就能发现错误,并且防注入攻击。

87850

(译)SDL编程入门(18)按键状态

按键状态 正如我们在鼠标输入教程中看到那样,除了使用事件之外,还有其他方法可以获得输入设备(鼠标、键盘等)状态。在本教程,我们将使用按键状态而不是事件来重新制作键盘输入教程。...我们所有的键盘输入都将通过键状态来处理。 关于SDL如何处理键状态,有一点很重要,那就是仍然需要一个事件循环运行。...首先,我们使用 SDL_GetKeyboardState[2]获得一个指向按键状态数组指针。所有键状态都是由 SDL_Scancode[3] 排序。...扫描码根据默认物理按键位置,而不是它们在特定键盘上位置。 您所要做就是检查某个键是否被关闭,检查它在键状态数组状态。...正如你在上面的代码中所看到那样,如果键按下,我们将当前纹理设置为相应纹理。如果键都没有按下,我们就设置默认纹理。 最后在这里,我们将当前纹理渲染到屏幕上。

1.1K40

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券