1.简介

程序就是用来处理数据的,而变量就是用来存储数据的。好呀,那我们今天就来聊聊 Python 中的变量吧!这可是编程里的一个重要概念哦。

2.变量的定义

变量,英文名叫做variable,是计算机语言中能储存计算结果或能表示值的抽象概念。变量,你可以把它想象成一个装东西的盒子。这个盒子可以装不同类型的东西,比如数字、文字、甚至是更复杂的数据。在 Python 里,变量就是用来存储数据的。

在《计算机科学概述》中,变量是这样定义的:“高级程序设计语言允许使用描述性的名字指向主存储器中的位置,而不必再使用数字地址,这样的名字称为变量(variable)。之所以是这样取名是因为,随着程序的执行,只要改变存储在这个位置里的值,那么与改名字相联系的值就会改变。”

3.初识变量

变量–数据的容器–计算机的本质就是和各种数据打交道。

编程中有很多的数据可能会反复使用,每次都重写很笨,所以就把它保存起来,取个好理解的名字,要用的时候直接使用就可以。

在计算机里我们的变量是由3个东西组成的:

1.数据类型(type)

2.内存地址(id)

3.值(value)

可以把变量想象成为一个仓库:

1.数据类型–>仓库类型
2.内存地址–>仓库地址
3.变量值–>仓库里放的东西

在Python中,变量是一个用于存储数据值的容器。与一些其他编程语言不同,Python中的变量不需要显式声明类型;它们会根据分配给它们的值自动确定类型。这意味着你可以将整数、浮点数、字符串、列表、元组、字典、集合等不同类型的值赋给同一个变量,但每次赋值后,变量的类型会随之改变。

4.变量名

变量可以使用短名称(如 x 和 y)或更具描述性的名称(age、carname、total_volume)。

5.变量命名规则

在Python中,变量名必须遵循以下规则:

只能包含字母、数字和下划线:变量名可以包含字母(a-z, A-Z)、数字(0-9)以及下划线(_)。

不能以数字开头:变量名不能以数字开头,但可以在名称的其余部分包含数字。

区分大小写:Python是大小写敏感的,因此myVar和myvar会被视为两个不同的变量。

不能使用Python的保留字:Python有一些保留字(也称为关键字),如if、for、class等,这些词不能用作变量名。

5.1 命名规则1(蛇形命名)

1.= 号两边各留一个空格
2.变量名由超过两个以上的单词组成,每个单词之间由下划线链接
3.每个单词都小写
4.first_name,my_school_num

5.2 命名规则2(驼峰命名)

小驼峰:
1.第一个单词小写开始,后续单词大写
2.firstName 大驼峰:
1.每个单词的首字母都大写
2.FirstName

6.变量使用规范

使用变量时,需要遵守一些规则。违反这些规则将引发错误。

~变量名只能包含数字、字母、下划线。变量名不能以数字开头以及不能包含空格。

~变量名不能将Python保留字和函数名作为变量名。如print等

如下是python3的33个保留字列表:

~变量名要简单又具有描述性。如name比n好,user_name比u_n好。

~慎用大写字母I和O,避免看错成数字1和0。

7.变量的声明和赋值

Python 变量的赋值指的是将数据放入变量的过程。在Python中,变量的声明和赋值是同时进行的。当你将一个值赋给一个变量时,Python会自动声明这个变量。

7.1Python中的变量不需要声明类型

这是根据Python的动态语言特性而来。变量可以直接使用,而不需要提前声明类型。例如下面的a,b,c,d四个变量,在使用前没有进行任何的诸如 int a, str b, list c , int d 的类型声明,而这在C语言和JAVA编程语言中是必须要携带的。例如:

 a = 4
b = "haha"
c = []
d = 9-5

7.2用“=”号来给变量赋值

a = 100

这里的等号要理解并读作“赋值”,而不是“等于”,“赋值”是对变量的操作,而“等于”是对两个变量进行比较。上面的a,b,c,d四个变量,就通过“=”号,赋予了不同的值。

7.3每个变量在使用前都必须赋值,变量赋值以后才会被创建。

新的变量通过赋值的动作,创建并开辟内存空间,保存值。如果没有赋值而直接使用会抛出赋值前引用的异常或者未命名异常。例如:

a       # 孤单单一个a,什么也表示不了,只能报错
a = 1 # 这样就没问题了,解释器知道a是个新变量了
c.append(1) # c是个什么鬼?

没有赋值报错如下:

NameError: name ‘a’ is not defined
NameError: name ‘c’ is not defined

变量的作用:昵称其代指内存里某个地址中保存的内容。

7.4变量的赋值

Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

1.单个变量赋值语法:变量名称 = 值

# -*- coding:utf-8 -*-
name1 = "北京-宏哥"

2.多个变量赋值(同时给多个变量赋相同的值)语法:变量名称 = 变量名称 = 变量名称 = 值

# -*- coding:utf-8 -*-

name1=name2 = "北京-宏哥"

或者:

# -*- coding:utf-8 -*-

name1 = "北京-宏哥"
name2 = name1

3.多个变量赋值(同时给多个变量赋不同的值)语法:变量名称1 , 变量名称2 , 变量名称3 = 值1 , 值2 ,值3

# -*- coding:utf-8 -*-

name1, name2 = "北京-宏哥", "宏哥"

7.5变量的值交换

实例,如下:

# -*- coding:utf-8 -*-

name1, name2 = "北京-宏哥", "宏哥"
name1, name2 = name2, name1

8.变量类型

在内存中创建一个变量,会包括:

  • 变量名称
  • 变量保存的数据
  • 变量存储数据的类型
  • 变量的地址 (标示)

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

在Python中,变量本身没有数据类型的概念通常所说的“变量类型”是变量所引用的对象的类型,或者说是变量的值的类型。

a = 1
a = "haha"
a = [1, 2, 3]
a = { "k1":"v1"}

变量a在创建的时候,赋予了值为1的整数类型,然后又被改成字符串“haha”,再又变成一个列表,最后是个字典。变量a在动态的改变,它的值分别是不同的数据类型,这是动态语言的特点。

9.“=”号这个赋值运算符是从右往左的计算顺序

a = 1
b = 2
c = a + b # 先计算a+b的值,再赋给c
print(c)

10.Python允许同时为多个变量赋值

(例如:a = b = c = 1,最终大家都是1)。也可以同时为多个变量赋值,用逗号分隔,逐一对应。

例如:a, b, c = 1, 2, 3,最后a是1,b是2,c是3。

不要把赋值语句的等号等同于数学的等号。

x = 1
x = x + 2

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果3,再赋给变量x。由于x之前的值是1,重新赋值后,x的值变成3。

a = 'ABC’时,Python解释器干了两件事情:

1. 在内存中创建了一个‘ABC’的字符串对象;

2. 在内存中创建了一个名为a的变量,并把它指向'ABC'。

 也可以把一个变量a赋值给另一个变量b,这个操作实际上是将变量b指向变量a所指向的数据,

例如下面的代码:
a = 'Jack'
b = a
a = 'Tom'
print(b)
print(a)

最后变量b的内容到底是’Jack’还是’Tom’?如果从数学意义上理解,就会错误地得出b和a相同是‘Tom’,但实际上b的值还是’Jack ‘!

请牢记:Python中的一切都是对象,变量是对象的引用!

执行a = ‘Jack’,解释器创建字符串‘Jack’对象和变量a,并把a指向‘Jack’对象;

执行b = a,解释器创建变量b,并且将其指向变量a指向的字符串‘Jack’对象;

执行a = ‘Tom’,解释器创建字符串‘Tom’对象,并把a改为指向‘Tom’对象,与b无关。

11.常量

常量就是不变的变量,比如常用的数学常数圆周率就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

但事实上,从Python语法角度看,PI仍然是一个变量,因为Python根本没有任何机制保证PI不会被改变。你完全可以给PI赋值为10,不会弹出任何错误。所以,用全部大写的变量名表示常量只是一个习惯上的用法。

常量通常放置在代码的最上部,并作为全局使用。

12.变量内存地址变化

文章的最后,讲点比较深奥的东西。在Python中,变量的内存地址标识码可以用id()命令来查看。

12.1变量的内存地址

在Python中,变量并不是直接存储数据本身,而是存储了对数据对象的引用(或者说是“指针”的概念,尽管Python内部并不直接使用“指针”这个词)。这意味着变量实际上存储的是数据对象在内存中的地址。然而,由于Python的内存管理机制(包括垃圾回收机制),直接暴露内存地址给开发者并不是Python设计的一部分,因此我们不能直接像C或C++那样通过指针来操作内存地址。

尽管如此,Python提供了一些方法来间接查看或理解变量的“内存地址”概念,尽管这些通常是通过对象的身份(identity)来表现的,而不是直接的内存地址。

12.2如何查看变量的“内存地址”

在Python中,你可以使用id()函数来获取一个对象的“身份”,这个函数返回的是一个整数,这个整数在对象的生命周期内是唯一的,并且在大多数实现中,这个整数可以被视为对象在内存中的地址(尽管这不是严格保证的,因为它依赖于Python解释器的具体实现)。

1.实例如下:

# -*- coding:utf-8 -*-

name1 = "北京-宏哥"
print(id(name1))
name2 = "宏哥"
print(id(name2))

2.运行代码:

D:\Python\python.exe D:/Demo/test.py
2597726271672
2597726560080 Process finished with exit code 0

3.从上边我们知道点击运行按钮,会输出两个不同的数字,这就是变量a的内存地址,可以发现更改后有所变化。奇妙的是:再次点击运行按钮,输出结果却变了:

D:\Python\python.exe D:/Demo/test.py
2537443375288
2537443663696 Process finished with exit code 0

4.显然,再次运行,内存地址又变了!这就说明:在每次计算机运行代码时,都会在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

13.总结

13.1变量练习题

可以用其他变量的计算结果来定义变量。

需求:

  • 苹果的价格是 8.5 元/斤
  • 顾客一共买了 7.5斤苹果
  • 计算顾客付款金额总数

python实现的程序代码:

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程2-变量与常量
''' # 3.导入模块 # 定义苹果的价格
price = 8.5
# 定义买的数量
weight = 7.5
# 定义总金额
money = price * weight
# 输出最后的价格
print(money) # 变量名 只有在第一次出现 才是定义变量
# 变量名 再次出现,不是定义变量,而是直接使用之前定义过的变量

13.2变量类型练习题

需求:

定义变量保存小明的个人信息

姓名:小明

年龄:18岁

性别:是男生

身高:1.75米

体重:75.0公斤

python实现代码:在运行的时候,Python 解释器会根据赋值语句等号右侧的数据自动推导出变量中保存数据的准确类型

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程2-变量与常量
''' # 3.导入模块 name = "小明"
age = 18
sex = True
high = 1.75
weight = 75.0

利用断点debug调试确认变量中保存数据的类型,如下图所示:

13.2一个变量能否指向多个值?

答案当然是不可以啦!在Python中,一个变量不能“直接”指向多个值。变量在任何给定时间都只引用(或“指向”)一个对象。但是,你可以通过改变变量的引用来使其指向不同的对象。

实例如下:

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程2-变量与常量
''' # 3.导入模块 a = 10
print(id(a)) # 变量a的内存地址:140714215203952 # 给a变量重新赋值
a = 20
print(id(a)) # 变量a的内存地址:140714215204272 ,与上一个不同,因为a现在引用了一个不同的对象

在这个例子中,变量a最初引用了一个值为10的对象,然后我们改变了a的引用,使其指向了一个值为20的新对象。这并不意味着a“同时”指向了两个值;它只是改变了它的引用。

本文基于Python基础,主要介绍了Python基础中变量和常量的区别 。希望对大家的学习有帮助。

Python零基础从入门到精通详细教程2-变量与常量的更多相关文章

  1. Python 零基础快速入门!

    “人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...

  2. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  3. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件

    前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...

  4. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数

    什么样的程序员才是优秀的程序员?咪博士认为“慵懒”的程序员才是真正优秀的程序员.听起来不合逻辑?真正优秀的程序员知道如何高效地工作,而不是用不止境的加班来完成工作任务.函数便是程序员高效工作的利器之一 ...

  5. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环

    在前面的教程中,咪博士留了一道练习题给大家—-画正方形,相信聪明的你应该已经画出来了. 下面是咪博士实现的代码. 是不是跟你的代码很像呢? import turtle turtle.forward(2 ...

  6. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量

    大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 import turtle turtle.shape("tu ...

  7. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友

    Python (Windows 下) 自带了一个非常有趣的 海龟绘图程序 (turtle),它是本系列课程的主角. 在 PyCharm 中,新建一个项目,然后在代码编辑器中输入 import turt ...

  8. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作

    一.关于 Python Python 是全球使用人数增长最快的编程语言!它易于入门.功能强大,从 Web 后端 到 数据分析.人工智能,到处都能看到 Python 的身影. Python 有两个主要的 ...

  9. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 5. 参数

    上一个教程中,咪博士带大家学习了函数的使用.例如,line_without_moving 函数,可以让海龟先画出一条线段,然后再回来起点. def line_without_moving(): tur ...

  10. 【零基础】入门51单片机图文教程(Proteus+Keil)

    参考资料: https://www.jianshu.com/p/88dfc09e7403 https://blog.csdn.net/feit2417/article/details/80890218 ...

随机推荐

  1. 远程登录Mysql,命令行登录Mysql的方法

    1.本地登录MySQL命令:mysql -u root -p   //root是用户名,输入这条命令按回车键后系统会提示你输入密码2.指定端口号登录MySQL数据库将以上命令:mysql -u roo ...

  2. DA指令通俗理解

    DA指令通俗理解 最近在学微机的过程中,学到DA指令时对其底层实现感兴趣,但是搜集了网上的资料并没有讲的很清楚易懂的,遂有此文章,来分享一些我对这个指令的理解. 1.DA指令的作用 DA A这条指令书 ...

  3. 给定 (u,v),如何 O(1) 求 lca(u,v) 的孩子 u',v',且分别为 u,v 的祖先或本身

    问题描述 一棵树,\(q\) 次询问给定 \(u,v\),保证 \(u,v\) 不为祖孙关系.设 \(p=\operatorname{lca}(u,v)\),求 \(p\) 的一个孩子 \(u'\) ...

  4. C++数据结构和算法代码模板总结——算法部分

    数据结构和算法学*了将*两周,及时总结和整理一下相关的知识点温故而知新.(一)C++双指针,有个经典的问题:荷兰国旗问题.[leetcode]75.颜色分类 public void sortColor ...

  5. What is Good Code

    DRY:Don't repeat yourself 尽可能的不要有重复代码,同时意味着你要有足够多的抽象和思考,将相同的功能函数放在一个地方,不要重复. SRP:Single responsiblit ...

  6. 开源项目丨ChengYing 1.1版本重磅发布:新增超多功能,全新优化体验!

    ChengYing是一站式全自动化全生命周期大数据平台运维管家,提供大数据产品的一站式部署.运维.监控服务,其可实现产品部署.产品升级.版本回滚.扩缩节点.日志诊断.集群监控.实时告警等功能,致力于最 ...

  7. 苹果Apple验证码无法发送至该电话号码。请稍后重试

    前言 因为CSDN的种种作为,广告,非同意文章收费等原因,此后我的文章将转移博客园发布登陆苹果账户,输入账户登陆不发送验证码,旧手机号不用,重置了新手机号,新密码,登陆不上系统 解决1拨打苹果客服电话 ...

  8. AI Chat 智能聊天工具,支持DeepSeek 、Gemini、Grok、OpenAI和自定义AI

    AI Chat [中文]|[English] AI Chat 是一个智能聊天工具,支持DeepSeek .Gemini.Grok.OpenAI和自定义AI,使用SwiftUI.SwiftData开发, ...

  9. HyperWorks二维网格划分与单元连续性

    自动网格划分 HyperWorks中为零件定义几何曲面是创建零件壳单元网格的最佳方式.HyperMesh 创建二维网格最有效的方法是使用 Automesh 面板直接在零件的表面创建网格. Autome ...

  10. 《机器人SLAM导航核心技术与实战》第1季:第12章_典型自主导航系统

    <机器人SLAM导航核心技术与实战>第1季:第12章_典型自主导航系统 视频讲解 [第1季]12.第12章_典型自主导航系统-视频讲解 [第1季]12.1.第12章_典型自主导航系统_ro ...