变量赋值篇

文章目录

  • 变量赋值
  • 增量赋值
  • 多重赋值
  • 多元赋值
  • 合法的标识符

变量赋值

在Python中,变量赋值是一个简单的操作,你可以使用等号(=)来将一个值赋给一个变量。以下是一些基本的变量赋值示例:

# 整数赋值
x = 10# 浮点数赋值
y = 3.14# 字符串赋值
name = "Alice"# 布尔值赋值
is_valid = True# 列表赋值
my_list = [1, 2, 3, 4, 5]# 元组赋值
my_tuple = (1, 2, 3)# 字典赋值
my_dict = {'name': 'Alice', 'age': 25}# 集合赋值
my_set = {1, 2, 3, 4}# 变量可以重新赋值
x = 20  # 现在x的值是20# 如果一个变量没有被赋值,它将不会被创建
# 尝试访问一个未赋值的变量将会导致NameError
# print(z)  # 这将引发错误,因为z还没有被定义

在Python中,变量的类型是根据所赋的值自动推断的,并且变量可以随后被重新赋值为不同类型的值。这种特性使得Python成为一种动态类型的语言。

此外,Python还支持多重赋值,这意味着你可以同时为多个变量赋值:

a, b, c = 1, 2, 3

在这个例子中,a 被赋值为 1,b 被赋值为 2,c 被赋值为 3。

还有一种扩展的赋值操作符,例如 +=,-=,*=,/= 等,这些可以用来更新变量的值:

x = 10
x += 5  # 这等同于 x = x + 5,现在x的值是15

这些操作符允许你以更简洁的方式更新变量的值,而不必每次都写出完整的赋值表达式。

增量赋值

在 Python 中,增量赋值是一种简洁的语法,用于将变量的当前值与一个增量(或减量)相结合,并将结果重新赋给该变量。增量赋值操作符包括 +=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、//=(整除等于)、%=(取模等于)、**=(幂等于)等。

使用增量赋值操作符可以避免在每次更新变量值时重复写出变量的名字,使代码更加简洁易读。

下面是一些使用增量赋值操作符的示例:

# 初始化变量
x = 10# 使用增量赋值操作符
x += 5  # 等价于 x = x + 5,现在 x 的值是 15
y -= 3  # 等价于 y = y - 3
z *= 2  # 等价于 z = z * 2# 对于复合赋值,也可以使用括号来明确运算顺序
a = 10
b = 2
a *= (b + 1)  # 等价于 a = a * (b + 1),现在 a 的值是 20# 对于字符串,增量赋值也可以用于连接字符串
s = "Hello"
s += " World!"  # 等价于 s = s + " World!",现在 s 的值是 "Hello World!"

增量赋值操作符不仅限于数值类型,它们同样适用于其他可变的数据类型,如列表、字典和集合。例如,你可以使用 += 操作符向列表中添加元素,或者使用 *= 操作符来扩展列表。

# 向列表中添加元素
my_list = [1, 2, 3]
my_list += [4, 5]  # 等价于 my_list = my_list + [4, 5],现在 my_list 是 [1, 2, 3, 4, 5]# 扩展列表
my_list *= 3  # 等价于 my_list = my_list + my_list + my_list,现在 my_list 是 [1, 2, 3, 4, 5] * 3

使用增量赋值可以使代码更加紧凑,同时提高代码的可读性和可维护性。

多重赋值

在Python中,多重赋值是一种非常有用的语法特性,它允许你同时给多个变量赋值。这可以通过在一个表达式中使用多个变量并用逗号分隔它们来实现。Python会按照从左到右的顺序计算表达式的值,并将结果分配给对应的变量。

下面是一些多重赋值的示例:

# 交换两个变量的值
a, b = 3, 4
print(a)  # 输出: 3
print(b)  # 输出: 4# 同时从函数返回多个值
def fetch_values():return 10, 20, "hello"x, y, z = fetch_values()
print(x)  # 输出: 10
print(y)  # 输出: 20
print(z)  # 输出: hello# 从一个列表中解包多个值
values = [1, 2, 3]
first, second, third = values
print(first)  # 输出: 1
print(second)  # 输出: 2
print(third)  # 输出: 3# 当变量数量少于表达式结果时,剩下的值会被忽略
a, b = 1, 2, 3  # a被赋值为1,b被赋值为2,3被忽略
print(a)  # 输出: 1
print(b)  # 输出: 2# 当变量数量多于表达式结果时,多余的变量会被赋值为None
x, y, z = 1  # x被赋值为1,y和z都被赋值为None
print(x)  # 输出: 1
print(y)  # 输出: None
print(z)  # 输出: None

多重赋值不仅仅局限于数字或列表,还可以用于其他可迭代对象,如元组、字符串、集合等。

多重赋值在编程中特别有用,因为它可以使代码更加简洁,并允许你以更直观的方式处理多个值。例如,在处理返回多个值的函数时,或者在需要交换两个变量的值时,多重赋值都是非常方便的工具。

多元赋值

在Python中,多元赋值允许你一次性给多个变量赋值。这是一种简洁且易读的方式,特别是在处理多个返回值的函数或需要交换变量值时。

以下是一些多元赋值的例子:

# 同时给多个变量赋值
a, b, c = 1, 2, 3
print(a)  # 输出: 1
print(b)  # 输出: 2
print(c)  # 输出: 3# 交换两个变量的值
x, y = 5, 10
print(x)  # 输出: 5
print(y)  # 输出: 10# 使用多元赋值交换变量
x, y = y, x
print(x)  # 输出: 10
print(y)  # 输出: 5# 从函数返回多个值
def fetch_values():return 10, 20, "hello"# 使用多元赋值从函数接收多个返回值
x, y, z = fetch_values()
print(x)  # 输出: 10
print(y)  # 输出: 20
print(z)  # 输出: hello# 从列表或元组中解包值
values = [1, 2, 3]
first, second, third = values
print(first)  # 输出: 1
print(second)  # 输出: 2
print(third)  # 输出: 3# 当你解包的变量数量少于列表或元组中的元素时,多余的元素会被忽略
values = [1, 2, 3, 4]
a, b = values
print(a)  # 输出: 1
print(b)  # 输出: 2
# 3和4没有被赋值给任何变量,因此它们会被忽略# 当你解包的变量数量多于列表或元组中的元素时,多余的变量会被赋值为None
values = [1, 2]
x, y, z = values
print(x)  # 输出: 1
print(y)  # 输出: 2
print(z)  # 输出: None

在多元赋值中,变量的数量必须与要赋值的值的数量相匹配,否则将会引发ValueError异常。

多元赋值在Python中非常常见,并且是一种非常有用的特性,它使得代码更加简洁且易于理解。

合法的标识符

在Python中,合法的标识符(identifier)必须遵循以下规则:

  • 标识符的第一个字符必须是字母(a-z或A-Z)或一个下划线(_)。
  • 标识符的其他部分可以由字母、数字(0-9)或下划线组成。
  • 标识符是大小写敏感的,这意味着my_var和my_Var是两个不同的标识符。
  • 标识符不能是Python的保留字(keyword)。保留字是Python语言中具有特殊含义的单词,例如if、else、for、while等。

以下是一些合法的Python标识符示例:

_private_var
__private_var__
my_variable
_123
variable1
Variable2
Variable_Name
__init__

以下是一些非法的Python标识符示例:

123_var  # 以数字开头
var-name  # 包含非法字符(减号)
if       # 保留字
class    # 保留字

注意,虽然以下标识符在语法上是合法的,但它们通常不被推荐用于编程实践,因为它们可能引起混淆或与Python的内置功能冲突:

import
global
print

最佳实践是选择描述性强、简洁且易于理解的标识符名称。这样可以提高代码的可读性和可维护性。

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

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

相关文章

Excel文件导入导出,SpringBoot整合EasyExcel批量导入导出,采用的JDBC+EasyExcel(附带整个Demo)

目录 0.为什么mybatis的foreach比JDBC的addBatch慢 1.引入依赖 2.Controller层 3.Service层 4.Utils工具类 5.自定义监听器 6.实体类 7Mapper层 不用Mybatis的原因就是因为在大量数据插入的时候jdbc性能比mybatis好1. 首先分批读取Excel中的数据 这一点EasyExcel有自己…

看完就等于拿捏浮点数在内存中的储存了

诸君又该学习了,今天我们继续来一睹浮点数的奥妙真容。 经过前面文章对整形提升相关的解释,我们都对整形和字符在内存空间上的储存已经有了大概的认知,那么现在我们就来好好讲讲浮点数在内存中的储存规则。 目录 浮点数与整形储存的不同 …

41-Vue-webpack基础

webpack基础 前言什么是webpackwebpack的基本使用指定webpack的entry和output 前言 本篇开始来学习下webpack的使用 什么是webpack webpack: 是前端项目工程化的具体解决方案。 主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览…

自定义序列化

3.2.2.自定义序列化 RedisTemplate可以接收任意Object作为值写入Redis: 只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的: 缺点: 可读性差内存占用较大 我们可以自定义RedisTempla…

NASA数据集——2015 年30 米分辨率的地衣地面覆盖率模型估计值

cABoVE: Lichen Forage Cover over Fortymile Caribou Range, Alaska and Yukon, 2000-2015 文件修订日期:2021-07-21 数据集版本: 1 摘要 本数据集提供了美国阿拉斯加东部内陆和加拿大育空地区 Fortymile 研究区 2015 标称年 30 米分辨率的地衣地面覆盖率模型估…

modbus代码思路整理

void main() { eMBinit(); eMBEnable();/*1.eRcvState = STATE_RX_INIT 2.USART:USART_RX->Enable & USART_TX->Disable 3.打开TIM(5ms):Enable 4.eMBState = STATE_ENABLE*/ while(1) {…

YOLOv8-ROS-noetic+USB-CAM目标检测

环境介绍 Ubuntu20.04 Ros1-noetic Anaconda-yolov8虚拟环境 本文假设ROS和anaconda虚拟环境都已经配备,如果不知道怎么配备可以参考: https://blog.csdn.net/weixin_45231460/article/details/132906916 创建工作空间 mkdir -p ~/catkin_ws/srccd ~/ca…

SQL注入四-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件

演示案例: PHP-MYSQL-二次注入-DEMO&74CMSPHP-MYSQL-堆叠注入-DEMO&CTF强网PHP-MYSQL-带外注入-DEMO&DNSLOG #PHP-MYSQL-二次注入-DEMO&74CMS 1、DEMO-用户注册登录修改密码 2、CMS-74CMS个人中心简历功能 黑盒思路:分析功能有添加后对数…

dom元素+CSS实现阶梯动画效果

1.效果 2.代码实现 <template><div class"container"><div class"Box"><div class"box" style"background-color: red;"></div><div class"box" style"background-color: orange;&q…

湖北专升本报名照片需要<40kb怎么解决

湖北专升本报名照片需要<40kb怎么解决

vue 修改element-plus主题色

一、安装SCSS npm install sass --save-dev npm install sass-loader --save-dev npm install node-sass --save-dev npm install vue-style-loader --sava-dev 二、添加主题文件theme.scss forward "element-plus/theme-chalk/src/common/var.scss" with ($col…

特种兵旅游-扬州、南京

一、扬州 Day01 西安咸阳机场->扬州泰州机场&#xff08;扬州地界但是离泰州也嘎嘎近&#xff09;->大运河博物馆&#xff08;需要提前预约&#xff01;&#xff09;&#xff08;超级震撼&#xff09; Day02 瘦西湖&#xff08;门票有点贵&#xff0c;但是蛮值得&#x…

kubernetes负载均衡-service

一、service的概念 1、什么是service 在Kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;当我们需要访问这个应用时&#xff0c;可以通过Pod的IP进行访问&#xff0c;但是这里有两个问题:1、Pod的IP地址不固定&#xff0c;一旦Pod异常退出、节点故障&#xff0c;则会…

量子计算与大模型融合的潜力与挑战探索

量子计算与大模型融合的潜力与挑战探索 1. 背景介绍 随着人工智能技术的飞速发展&#xff0c;大模型在自然语言处理、计算机视觉等领域取得了显著的成果。然而&#xff0c;大模型训练需要大量的计算资源&#xff0c;导致训练时间长、能耗高。量子计算作为一种新型计算方式&am…

【STM32】读写BKP备份寄存器RTC实时时钟

目录 BKP BKP简介 BKP基本结构 BKP测试代码 RTC RTC简介 RTC框图 RTC基本结构 硬件电路 RTC操作注意事项 接线图 初始化 使用BKP解决只初始化一次时间 初始化参考代码 RTC设置时间 RTC读取时间 完整代码 MyRTC.c MyRTC.h main.c BKP BKP简介 BKP&#xff0…

渗透测试-ssh私钥泄露知识记录

1 ssh私钥泄露 1.1 信息探测 渗透其实是针对服务的漏洞探测&#xff0c;然后进行数据包的发送&#xff0c;获取机器的最高权限。 nmap –sV 192.168.0.1常用端口0-1023端口&#xff0c;在扫描结果中查找特殊端口&#xff0c;针对特殊端口进行探测&#xff0c;尤其是对开放大端…

pytorch中tensor类型转换的几个函数

目录 IntTensor转FloatTensor FloatTensor转IntTensor Tensor类型变为python的常规类型 IntTensor转FloatTensor .float函数&#xff1a; FloatTensor转IntTensor .int函数 Tensor类型变为python的常规类型 item函数

阿里云部署MySQL、Redis、RocketMQ、Nacos集群

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容MySQL集群配置云服务器选购CPU选择内存选择云盘选择ESSD AutoPL云盘块存储性能&#xff08;ESSD&#xff09; 镜像选择带宽选择密码配置注意事项 安装docker和docker-compose部署MySQL三主六从半同步集群一主二从同步集群规…

perl:获取同花顺数据--业绩预告

perldoc LWP::UserAgent 如果没有安装&#xff0c;则安装模块&#xff0c;运行 cpanm LWP::UserAgent 。 编写 get_yjyg_10jqka.pl 如下 #!/usr/bin/perl # perl 获取同花顺数据--业绩预告 use LWP::UserAgent; use Encode qw(decode encode); use POSIX; use Data::Dump…

pytorch如何向tensor结尾添加元素或维度--torch.cat()、torch.unsqueeze()的用法

目录 示例1 矢量后增加元素 示例2 tensor维度增加1 示例3 另一种替代unsqueeze的方法 示例1 矢量后增加元素 使用torch.cat()函数 ptorch.Tensor([1,5,0]) ptorch.cat((p, torch.Tensor([4])), 0) 结果&#xff1a; 这里&#xff0c;cat的第一个输入变量用()包绕&#xf…