如何在 Python3 中使用变量

介绍

变量是一个重要的编程概念,值得掌握。它们本质上是在程序中用于表示值的符号。

本教程将涵盖一些变量基础知识,以及如何在您创建的 Python 3 程序中最好地使用它们。

理解变量

从技术角度来说,变量是将存储位置分配给与符号名称或标识符相关联的值。变量名用于在计算机程序中引用存储的值。

您可以将变量想象成一个标签,标签上写着一个名字,这个标签关联了一块内存区域。

假设我们有一个整数,103204934813,我们想将其存储在一个变量中,而不是一遍又一遍地重新输入这个很长的数字。相反,让我们使用一些易记的东西,比如变量 my_int

my_int = 103204934813

如果我们将其视为与值相关联的标签,它将看起来像这样:

Python 变量示例

标签上写有变量名 my_int,并与整数值 103204934813 相关联。

短语 my_int = 103204934813 是一个赋值语句,由几个部分组成:

  • 变量名(my_int
  • 赋值运算符,也称为等号(=
  • 要与变量名关联的值(103204934813

这三个部分共同构成了将变量 my_int 设置为整数 103204934813 值的语句。

一旦我们将变量设置为一个值,我们就初始化或创建了该变量。一旦完成这一点,我们就可以使用变量而不是值。在 Python 中,变量无需在使用之前进行显式声明,就像某些编程语言一样;您可以立即开始使用变量。

一旦我们将 my_int 设置为 103204934813 的值,我们可以在整数的位置使用 my_int,所以让我们将其打印出来:

print(my_int)
103204934813

使用变量,我们可以快速而轻松地进行数学运算。通过 my_int = 103204934813,让我们减去整数值 813:

print(my_int - 813)
103204934000

在这个例子中,Python 为我们执行了减法,从变量 my_int 中减去 813,返回和为 103204934000

说到数学,变量可以设置为数学方程的结果。让我们将两个数字相加并将和的值存储到变量 x 中:

x = 76 + 145

上面的例子可能看起来像您已经熟悉的东西:代数。在代数中,字母和其他符号用于表示公式和方程中的数字和数量,就像变量是表示数据类型的值的符号名称一样。

让我们继续打印 x

print(x)
221

Python 返回值 221,因为变量 x 被设置为 76145 的和。

变量可以表示任何数据类型,不仅限于整数:

my_string = 'Hello, World!'
my_flt = 45.06
my_bool = 5 > 9 # 布尔值将返回 True 或 False
my_list = ['item_1', 'item_2', 'item_3', 'item_4']
my_tuple = ('one', 'two', 'three')
my_dict = {'letter': 'g', 'number': 'seven', 'symbol': '&'}

如果打印上述任何变量,Python 将返回该变量等于的值。例如,让我们使用上面的 list 数据类型 的赋值语句进行工作:

my_list = ['item_1', 'item_2', 'item_3', 'item_4']
print(my_list)
['item_1', 'item_2', 'item_3', 'item_4']

我们将 ['item_1', 'item_2', 'item_3', 'item_4'] 的列表值传递给变量 my_list,然后使用 print() 函数通过调用 my_list 打印出该值。

变量通过在计算机中划出一小块内存来工作,该内存接受指定的值,然后与该空间相关联。

命名变量:规则和样式

变量命名相当灵活,但需要记住一些规则:

  • 变量名必须只能是一个单词(即无空格)
  • 变量名只能由字母、数字和下划线 (_) 组成
  • 变量名不能以数字开头

遵循上述规则,让我们回顾一下有效和无效的变量名:

有效无效为何无效
my_intmy-int不允许使用连字符
int44int不能以数字开头
MY_INT$MY_INT不能使用除 _ 之外的符号
another_intanother int不能超过一个单词

在命名变量时,还需要记住它们是区分大小写的,这意味着 my_intMY_INTMy_IntmY_iNt 是完全不同的变量。为了确保您和当前以及未来的合作者都能正确理解您的变量,最好避免在程序中使用类似的变量名。

最后,关于样式的一些建议。传统上,命名变量时,惯例上是以小写字母开头,并在单词之间使用下划线。以大写字母开头并使用驼峰命名法或混合大小写字母的方式并不是无效的,有些人可能更喜欢在编写变量时使用这些方式,但这些选择较不常规。最重要的是在我们的程序中保持一致的命名风格。

传统样式非传统样式为何非传统
my_intmyInt驼峰命名法非传统
int4Int4大写字母开头非传统
my_first_stringmyFirstString驼峰命名法非传统

PEP 8 是官方的 Python 代码样式指南,它解决了许多有关 Python 样式的问题。总体而言,可读性和一致性优于其他样式考虑。

重新分配变量

正如单词 variable 暗示的那样,Python 变量可以轻松更改。这意味着您可以通过重新分配很容易地将先前分配的变量与不同的值关联起来。

能够重新分配是有用的,因为在程序的整个过程中,您可能需要接受已经初始化的变量中的用户生成的值,或者可能需要更改先前定义的分配。

让我们首先将 x 分配为整数,然后将其重新分配为字符串:

# 将 x 分配为整数
x = 76
print(x)# 重新分配 x 为字符串
x = "Sammy"
print(x)
76
Sammy

上面的例子显示了我们首先将变量 x 分配并将其值分配为整数,然后重新分配变量 x,这次将其值分配为字符串。

如果我们这样重写程序:

x = 76
x = "Sammy"
print(x)

我们只会收到第二个分配的值作为输出,因为那是最近的分配:

Sammy

重新分配变量在某些情况下是有用的,但您需要注意代码的可读性,并努力使您的程序尽可能清晰。

多重分配

使用 Python,您可以同时为多个变量分配一个单一值。这使您可以一次初始化多个变量,稍后在程序中自己或通过用户输入重新分配它们。

通过多重分配,您可以将变量 xyz 设置为整数 0 的值:

x = y = z = 0
print(x)
print(y)
print(z)
0
0
0

在这个例子中,三个变量(xyz)都被分配给相同的内存位置。它们各自等于值 0

Python 还允许您在同一行内为多个变量分配多个值。这些值中的每一个都可以是不同的数据类型:

j, k, l = "shark", 2.05, 15
print(j)
print(k)
print(l)
shark
2.05
15

在上面的例子中,变量 j 被分配为字符串 "shark",变量 k 被分配为浮点数 2.05,变量 l 被分配为整数 15

在一行内为多个变量分配多个值的这种方法可以减少您的代码行数,但请确保您不会因为代码行数减少而牺牲可读性。

全局变量和局部变量

在程序中使用变量时,重要的是要牢记变量作用域。变量的作用域是指在给定程序的代码中它可访问的特定位置。这就是说,并非所有变量都可以从程序的所有部分访问 - 有些变量将是全局的,而有些将是局部的。

全局变量存在于函数之外。局部变量存在于函数内部。

让我们看看全局变量和局部变量的实际情况:

# 创建一个全局变量,在函数之外
glb_var = "global"# 定义一个函数
def var_function():lcl_var = "local"  # 在函数内部创建一个局部变量print(lcl_var)# 调用函数以打印局部变量
var_function()# 在函数之外打印全局变量
print(glb_var)
local
global

上面的程序在任何函数之外分配了全局变量 glb_var,然后定义了函数 var_function()。在函数内部,一个名为 lcl_var 的局部变量被分配,然后打印出来。程序通过调用 var_function() 结束,然后打印 glb_var

由于 glb_var 是一个全局变量,我们可以在 var_function() 中引用它。让我们修改上面的小程序来做到这一点:

glb_var = "global"def var_function():lcl_var = "local"print(lcl_var)print(glb_var)  # 在函数内部打印 glb_varvar_function()
local
global
global

现在我们将全局变量 glb_var 打印两次,因为它既在函数内部又在函数外部打印。

如果我们尝试在函数之外调用局部变量会发生什么呢?

glb_var = "global"def var_function():lcl_var = "local"print(lcl_var)print(lcl_var)
NameError: name 'lcl_var' is not defined

我们不能在函数外部使用在函数内部分配的局部变量。如果尝试这样做,我们将收到一个 NameError

让我们回顾另一个示例,其中我们为全局变量和局部变量使用相同的变量名:

num1 = 5  # 全局变量def my_function():num1 = 10  # 使用相同的变量名 num1num2 = 7  # 分配局部变量print(num1)  # 打印局部变量 num1print(num2)  # 打印局部变量 num2# 调用 my_function()
my_function()# 打印全局变量 num1
print(num1)
10
7
5

因为局部变量 num1 在函数内部局部分配,所以当我们调用该函数时,我们看到 num1 等于局部值 10。当我们在调用 my_function() 后打印全局值 num1 时,我们看到全局变量 num1 仍然等于值 5

在函数内部使用 Python 的 global 语句,可以在函数内部分配全局变量:

def new_shark():# 将变量分配为全局global sharkshark = "Sammy"# 调用 new_shark() 函数
new_shark()# 打印全局变量 shark
print(shark)
Sammy

即使变量 sharknew_shark() 函数内部局部分配,由于在函数内部的变量分配之前使用了 global 语句,所以在函数外部调用 print(shark) 时我们不会收到错误。虽然您可以在函数内部分配全局变量,但您可能不经常需要这样做,应该倾向于可读的代码。

还需要注意的是,如果在函数内部引用一个变量,而没有为其分配一个值,那么该变量将被隐式视为全局变量。为了有一个局部变量,您必须在函数体内为它分配一个值。

在处理变量时,决定使用全局变量还是局部变量很重要。通常最好保持变量局部,但当您在多个函数中使用相同的变量时,可能希望初始化一个全局变量。如果您仅在一个函数或一个 class 内部使用变量,那么可能需要使用局部变量。

结论

本教程介绍了 Python 3 中变量的一些常见用法。变量是编程的重要组成部分,是用于表示程序中正在使用的数据类型值的符号。

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

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

相关文章

【JVM调优系列】如何导出堆内存文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子明细实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

图像处理------亮度

from PIL import Imagedef change_brightness(img: Image, level: float) -> Image:"""按照给定的亮度等级&#xff0c;改变图片的亮度"""def brightness(c: int) -> float:return 128 level (c - 128)if not -255.0 < level < 25…

leetcode234. 回文链表

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;hea…

《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

1.简介 按宏哥计划&#xff0c;本文继续介绍WebDriver关于元素定位大法&#xff0c;这篇介绍By ClassName。看到ID&#xff0c;NAME这些方法的讲解&#xff0c;小伙伴们和童鞋们应该知道&#xff0c;要做好Web自动化测试&#xff0c;最好是需要了解一些前端的基本知识。有了前端…

养成密码管理习惯,保障个人数字安全

在当今数字时代&#xff0c;保障个人信息的安全已经变得至关重要。创建和维护安全、复杂的密码是防范潜在攻击者的首要步骤。密码不仅仅是数字世界的通行证&#xff0c;更是个人隐私的最后一道防线。在本文中&#xff0c;我们将深入探讨密码安全管理的重要性。 在当今数字时代…

超实用+全覆盖!17个大分类,近500款主流实用精品AI工具导航,太贴心了!总有一款适合你。

超实用全覆盖&#xff01;17个大分类&#xff0c;近500款主流实用精品AI工具导航&#xff0c;太贴心了&#xff01;总有一款适合你。 大家好&#xff01;我是老码农。 今天给大家分享的这个工具导航&#xff1a;非常棒。 那棒在哪里呢&#xff1f; 第1点&#xff1a;非常垂…

Leetcode23-数组能形成多少数对(2341)

1、题目 给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums 选出 两个 相等的 整数 从 nums 中移除这两个整数&#xff0c;形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长…

USB8814动态信号采集卡——声音振动类信号处理的理想之选!

背景介绍&#xff1a; 科技的发展在一定程度上依赖于对信号的处理&#xff0c;信号处理技术的先进性在很大程度上决定了科技发展的速度和方向。数字信号处理技术的崛起&#xff0c;彻底改变了传统的信息与信号处理方式&#xff0c;使得数据采集这一前期工作在数字系统中发挥着…

JavaScript 学习笔记(Day1)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 1 课程介绍 2 课程软件准备工作 3 JavaScript 介绍 4 变量 5 常量 6 数据类型 7 类型转换 8 实战案…

最新GPT科研应用与AI绘图及论文高效写作

详情点击链接&#xff1a;最新GPT科研应用与AI绘图及论文高效写作 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制…

huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件

文章目录 一、找到需要下载的huggingface文件二、准备工作&#xff08;一&#xff09;安装git-lfs&#xff08;二&#xff09; 配置git ssh 三、检查ssh连接huggingface是否成功 一、找到需要下载的huggingface文件 huggingface官网链接&#xff1a;https://huggingface.co/ 以…

Python和Java代码实现:切线法求解一维最优化问题

Python和Java代码实现&#xff1a;切线法求解一维最优化问题 代码实现Python代码Java代码 求解实例 根据概念查询&#xff0c;切线法定义如下&#xff1a; 切线法&#xff08;Tangent Method&#xff09;是一种用于求解非线性方程的数值方法。它也被称为牛顿法&#xff08;Newt…

HarmonyOS之sqlite数据库的使用

从API Version 9开始&#xff0c;鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是 relationalStore在 getRdbStore操作时&#xff0c;在预览模式运行或者远程模拟器运行都会报错&#xff0c;导致无法使用。查了一圈说只有在真机上可以正常使用&#xff0c;因此这里…

分布式搜索引擎ElasticSearch——基础

分布式搜索引擎ElasticSearch——基础 文章目录 分布式搜索引擎ElasticSearch——基础初识elasticsearch什么是elasticsearchelasticsearch的发展正向索引和倒排索引安装elasticsearch&#xff0c;kibana部署单点es创建网络加载镜像运行 部署kibana部署DevTools 安装IK分词器在…

人类的逻辑常常是演绎、归纳和溯因推理混合

人类的逻辑推理往往是一种综合运用不同推理方式的能力。 演绎推理是从已知的前提出发&#xff0c;推断出必然的结论。通过逻辑规则的应用&#xff0c;人们可以从一些已知的事实或前提出发&#xff0c;得出一个必然成立的结论。演绎推理是一种严密的推理方式&#xff0c;它能够保…

STM32F103标准外设库—— 新建工程与库函数(四)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

Go新项目-配置文件的选取及区别和写法(1)

先说结论&#xff1a;我们选型TOML yaml&#xff0c;toml&#xff0c;json&#xff0c;ini 实际业务都有用 实际栗子是&#xff1a;我们想要把Go的切片作为配置文件&#xff0c;YAML写起来比较吃力&#xff0c;TOML就很容易了。 配置文件是用于配置计算机程序的参数、初始化设…

文件操作一(非常重要)

文件操作一&#xff08;非常重要&#xff09; 一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;三、文件名(简单理解)四、二进制文件和文本文件&#xff08;重要&#xff09;五、流的概念&#xff08;非常重要&#xff09;六、文件的打开和关闭七、文件的顺序读写函数…

HarmonyOS应用开发者初级认证试题库(鸿蒙)

目录 考试链接&#xff1a; 流程&#xff1a; 选择&#xff1a; 判断&#xff1a; 单选&#xff1a; 多选&#xff1a; 考试链接&#xff1a; 开发者能力认证-职业认证-鸿蒙能力认证-华为开发者学堂 (huawei.com)https://developer.huawei.com/consumer/cn/training/dev-…