day02-变量
1、变量的概念
在我们生活中,提到一个人或者一个物体,会有一个名字来称呼它;
那我们称呼一个人,我们不会叫一个人,而是喊他的名字,比如张三是这个人的名字
同样的,在计算机语言中,也是如此,我们会有很多数据或者对象,比如年龄18和名字张三
那我们就需要存储这些数据或者对象,并且还要起个名字,那么就要用到变量,所以变量就是该数据或者该对象的名字。
可能还有人不太理解,那我们用个通俗的方式解释,变量可以看做一个个小箱子,里边放着各种东西,每个箱子有自己的独一无二的记号,这样我们通过记号就可以找到我们所需要的东西
这里我们深入一下,变量是存在我们电脑内存里的,所以电脑的内存会分成很多内存块,而每个内存块都有自己的独一无二的变量名
2、变量的赋值
现在已明白变量是怎么回事了,那我们要给变量赋值,把数据或对象放入变量的过程就叫赋值,比如我们上边的举例变量是一个个小箱子,而把东西放入一个个小箱子里,其实就叫我们的赋值,而在Python中,我们使用等号
=
来进行赋值。格式如下:
name = value
name 表示我们的变量名,具体怎么命名我们下边讲
value 表示值,也就是要存储的数据
例子:有一个人,名字叫张三,年龄是18,性别是男,体重是60.5
1)将该人的各个数据以变量赋值,并将各个变量打印输出
2)该人增长了10kg,将增长后的体重打印输出
3)将该人的全部信息打印出来(如名字张三,年龄18,性别男,体重60.6kg)
# 1 name = "张三" age = 18 sex = '男' weight = 60.5 print(name, age, sex, weight) # 2 变量参与运算 weight = weight + 10 print(weight) # 3 字符串拼接 print("名字" + name + ",年龄" + str(age) + ",性别" + sex + ",体重" + str(weight) + "kg")
从例子中我们可以知道,变量可以赋值,赋值后还可以进行运算,还可以字符串拼接,第3题如果不了解我们之后讲到Python的数据类型就会明白了
上边例子中的1题,我们还有个办法处理,这就用到了给多个变量进行同时赋值
# 1) name, age, sex, weight = "张三", 18, '男', 60.5 print(name, age, sex, weight)
3、变量名的规则
Python标识符规范
上边讲到我们的变量名严格来说是可以随便起的,但是呢,要遵守我们的Python标识符规范,还有避开Python内置函数命名和Python的保留字命名。
以下是Python的标识符规范:
- 标识符由字母(大小写均可)、数字和下划线组成,但不能以数字开头。
- 标识符不能包含空格或特殊字符,如@、$、%等。
- 标识符区分大小写,例如,"myVar"和"myvar"是不同的标识符。
- 标识符不能是Python的关键字(保留字),如if、for、while等。关键字是Python语言中已经被赋予特殊含义的单词,不能用作标识符。
- 标识符应具有描述性且易于理解,以提高代码的可读性。
以下是一些符合Python标识符规范的示例:
my_variable
count
total_sum
MAX_VALUE
PI
is_valid
calculate_area
以下是一些不符合Python标识符规范的示例:
2nd_number # 以数字开头,不符合规范 my-variable # 包含特殊字符"-",不符合规范 for # 是Python关键字,不能用作标识符
具体详细的内容也可看Python标识符命名规范
Python内置函数
Python提供了许多内置函数,这些函数可以直接在Python代码中使用,无需导入任何模块。以下是一些常见的Python内置函数:
print()
:用于将指定的内容输出到控制台。input()
:用于从用户获取输入,返回用户输入的字符串。len()
:用于返回一个对象(字符串、列表、元组等)的长度或元素个数。type()
:用于返回一个对象的类型。int()
:用于将一个对象(通常是字符串)转换为整数类型。float()
:用于将一个对象(通常是字符串)转换为浮点数类型。str()
:用于将一个对象转换为字符串类型。list()
:用于将一个可迭代对象(如字符串、元组等)转换为列表。tuple()
:用于将一个可迭代对象(如字符串、列表等)转换为元组。range()
:用于生成一个指定范围内的整数序列。max()
:用于返回一组数值中的最大值。min()
:用于返回一组数值中的最小值。sum()
:用于计算一组数值的总和。abs()
:用于返回一个数值的绝对值。round()
:用于将一个数值四舍五入为指定小数位数的精度
上述内置函数是我们常用的可以谨记,除了这些还有其他有用的内置函数可供使用。可以参考Python官方文档中的内置函数部分Python官方文档-内置函数
tips:变量的命名不能使用内置函数,那我们就使用内置函数来命名,那会有什么问题呢?
print(type) type = 2 print(type) # 输出结果正确 <class 'type'> 2
发现竟然不报错,但是type原来的功能已经丧失
我们在来看一个
print(print) print = 2 print("还能使用打印吗")
我们来运行下
报错:int对象不可被调用
原因: 先打印了print没有报错,然后
print
赋值为整数 2,覆盖了内置函数 print()
的功能。当尝试调用 print("还能使用打印吗")
时,Python 将会将 print
视为整数对象,而不是函数Python的保留字
Python中的保留字,也称为关键字(Keywords),是被Python编程语言保留的特定单词,具有特殊含义,用于表示语法结构、控制流程和定义标识符等。
这些保留字不能用作标识符(变量名、函数名等),因为它们已经在Python语言中具有了预定义的含义。
查看Python的关键字
import keyword print(keyword.kwlist)
Python关键字有哪些(截至Python 3.9版本)
请注意,这些保留字都是小写的,Python是区分大小写的,and是关键字,而And就不是关键字。
tips:同样那我们使用关键字来作为变量,那会有什么问题呢?
print(is) is = 2 print(is) # 输出结果报错 print(is) ^ SyntaxError: invalid syntax
报错:语法错误:无效的语法
原因:
is
是关键字,而不是变量,所以会引发语法错误;把 is
赋值为整数 2。这也是不允许的,因为关键字不能用作变量名。4、变量的引用
在变量的概念中,我们简单介绍了变量的引用,接下来,我们深入下原理
a = 1
print(id(a)) # id函数可以查看变量的内存地址 # 输出结果 140709863675552
其实呢,在内存中,a和1是分开存储的,通过a能找到1,是因为a存储着1这个对象的内存地址,这个也叫引用
所以底层原理:变量存储的是对象的内存地址
a = 1 print(id(a)) b = a print(b) print(id(b)) # 输出结果 140709863675552 1 140709863675552
把a赋值给b了,b也会等于1,代码中看出b这里也是存储了1的内存地址,所以b也会等于1
那我们把a的值变下,a = 2,那现在a会等于多少,b会等于多少
a = 1 b = a a = 2 print(a) print(b) # 输出结果 a=2 b=1
b为什么没有改为2呢
可以看出,把a的值改为2,那么a就会存储2的内存地址,所以a=2
但是b还是存储的1的内存地址,所以b=1
a = 1 print(id(a)) b = a print(id(b)) print("-------------------------------------") a = 2 print(id(a)) print(id(b)) # 输出结果 140709863675552 140709863675552 ------------------------------------- 140709863675584 140709863675552
5、与其他编程语言的区别
python 是动态类型语言,所以声明变量的时候不需要指定数据类型,同一个变量可以指向不同数据类型的值
简单来说
- 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
- 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
与Java、C语言、C++不同,这些语言需要先定义数据类型,在进行赋值
day02练习
初级:
1.查看变量name = 'hua' 的数据类型
2.请编写一个程序,要求用户输入自己的姓名、年龄和国籍,并存储在合适的变量中。然后,输出一个包含用户信息的完整句子,例如:"我的名字是[姓名],我今年[年龄]岁,我是[国籍]人。"。
3.识别哪些是符合Python标识符规范的字段和不符合Python标识符规范的字段:
- 123abc
- my-variable
- class
- $money
- my variable
- count
- total_sum
- max_value
中级:
1.编写一个程序,要求用户输入两个整数,将它们相加并输出结果。
2.编写一个程序,要求用户输入一个字符串,计算并输出该字符串的长度。(len()内置函数)
3.编写一个程序,要求用户输入一个圆的半径,计算并输出该圆的面积(使用圆周率π=3.14159)
高级:
1.编写一个程序,给a赋值一个整数,然后打印出a的值和内存地址。
2.给a的值+1,然后打印出新的a的值和内存地址
3.编写一个程序,给b赋值一个整数,然后打印出b的值和内存地址
4.交换新的a的值和b的值,分别打印输出