这一张我们主要讲解变量的基本知识,以及如何在 Python 中使用变量。
目录
6-1 什么是变量
6-2 変数の定義と値の代入
6-3 如何使用累积赋值运算符(复合赋值运算符)
6-4 删除变量
大多数编程语言,不仅仅是 Python,都使用称为变量的东西来存储值。变量用于存储您要重复使用或稍后引用的数字和字符串。
例如,在下面的示例中,产品的销售价格被计算为价格 x 利润率并输出到屏幕。
print("一个橘子的价格是" + str(150 * 1.1))
print("一个苹果的价格是" + str(80 * 1.1))
print("一个香蕉的价格是" + str(100 * 1.1))
如果我们每次都乘述利润率,当利润率发生变化时我们必须改变所有的编码。在这种情况下使用变量很方便。
lirunlv = 1.08
print("一个橘子的价格是" + str(150 * lirunlv))
print("一个苹果的价格是" + str(80 * lirunlv))
print("一个香蕉的价格是" + str(100 * lirunlv))
我们定义了一个名为 lirunlv 的变量,并为其指定了 1.1 数字。这样我们在以后的编码中,就可以直接用已赋值的变量,而不是直接写数值或字符串。
通过使用变量,比直接写数字更不容易出现错误,并且当利润率发生变化时,您只需更改分配给变量的值即可。
lirunlv = 1.15 # 如果润率发生改变,这是唯一改变的地方
print("一个橘子的价格是" + str(150 * lirunlv))
print("一个苹果的价格是" + str(80 * lirunlv))
print("一个香蕉的价格是" + str(100 * lirunlv))
变量对于存储计算结果也很有用。例如,考虑计算英语、数学和语文成绩的总分和平均分的示例。
print("总成绩是" + str(80 + 99 + 64))
print("平均成绩是" + str((80 + 99 + 64)/3))
每次我们做( 80 + 99 + 64 )的操作,来计算总和和平均值。如果我们使用变量会很方便。
sum = 80 + 99 + 64
print ("总成绩为" + str( sum ))
print("平均成绩为" + str( sum /3))
我们定义了一个名为 sum 的变量,并计算和分配测试的总和。输出合计时,直接输出变量的值,输出平均值时,输出分配给变量的总分的结果。它不仅消除了一遍又一遍地计算测试总数的需要,还使程序更易于阅读和修改。
可以看到,变量在编写程序时非常有用,不可或缺。
python中的变量
变量的基本概念在任何编程语言中都基本相同,但变量之间的关系和赋值给变量的值主要有两种。
第一种方法是将变量视为存储值的盒子。值存储在称为变量的框中,当您使用变量时,您检索存储在变量中的值并使用它。
如果将存储在变量 A 中的值分配给另一个变量 B,则变量 B 的框中存储存储在变量 A 中的值的副本。每个盒子都会有相同的值,但会存储不同的值
另一种方法是将每个值存储在自己的位置上,变量是指示该值位置的标签。使用变量时,读取标签,检索并使用存储在变量指向的位置中的值。
如果将变量 A 中存储的值赋值给另一个变量 B,则变量 B 也将指向变量 A 所指向的值。这两个变量将指向相同的值。
这这里Python 中的变量是标签,而不是框。如果您在变量中存储或检索一旦创建就不能更改的对象,例如数字和字符串,则无需担心这两种方法之间的区别。但是,当在变量中存储列表和字典等可变(可变)对象时,框和标签之间的区别很重要,所以需要我们记住哪个变量是标签,哪个变量是框。
変数を定義する
在Python中使用变量时,不需要事先声明要使用的变量,也不需要指定变量处理的数据类型。但是,如果您尝试引用尚未定义的变量的值,则会发生错误。
print(number)
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> NameError: name 'number' is not defined
Python 中的变量是在您为其赋值时定义的。
变量名=值
可以赋给变量的值包括数字、字符串和其他对象。
old = 24
str = "Hello"
colorlist = ["red", "blue", "yerllow"]
用于赋值的运算符=称为赋值运算符,将右边的值或对象赋给左边的变量。
一旦定义了一个变量,就可以在您的程序中对其进行描述。当你写一个变量时,变量引用的值被替换和使用。
number = 10
print(number)
>> 10
此示例将整数 10 分配给变量 number 并对其进行定义。之后,我们将变量 number 指定为 print 函数的参数。10 被变量 number 引用的 10 替换,并执行打印功能以在屏幕上显示 10。
如何命名变量
命名变量时遵循以下规则。
・可以使用的字符是 a 到 z、A 到 Z、0 到 9、下划线(_)、汉字等。 ・
数字(0 到 9)不能用作第一个字符。
・下划线可以用作第一个字符,但它们有特殊用途。它在很多情况下都会使用,所以通常最好不要使用它。・
区分大小写。
・不能使用保留字。
我们将逐一进行讲解。
除了字母数字字符和下划线,Python 3 还可以使用汉字作为变量名(不推荐)。
address2023 = "Qingdao"
print(address2023)
>> Qingdao
age=25
print(age)
>> 25
可以使用数字,但不能作为第一个字符。
7point = 250
>> File "<stdin>", line 1
>> 7point = 250
>> ^
>> SyntaxError: invalid syntax
变量名称区分大小写。
str = "Hello"
STR = "Python"
print(str, STR)
>> Hello Python
保留字是 Python 语法中使用的字(例如,if 或 and)。保留字列表如下。
False | await | else | import | pass |
None | break | except | in | raise |
True | class | finally | is | return |
and | continue | for | lambda | try |
as | def | from | nonlocal | while |
assert | del | global | not | with |
async | elif | if | or | yield |
保留字不能用作变量名。试图将其定义为变量名将导致错误。
from = "Qingdao"
>> File "<stdin>", line 1
>> from = "Qingdao"
>> ^
>> SyntaxError: invalid syntax
请根据这些规则命名变量。
将另一个值赋给定义的变量
一个值在定义时被赋值给一个变量,但是一个不同的值可以赋给一个已经被赋值的变量。
name = "Yuhua"
name = "Jiangming"
Python中的变量不是一个存放值的地方,它指向一个存放值的地方。为变量分配新值会导致变量指向新值的位置(如果该值是数字或字符串)。
分配给变量的每个值都有数据类型,但变量本身没有。因此,可以稍后将另一种数据类型的值存储在通过分配数字类型的值定义的变量中。
personal = "Yuhua"
personal = 24
示例代码
请看下面的示例。
personal = "Yuhua"
print(personal)
>> Yuhua
personal = "Jiangming"
print(personal)
>> Jiangming
personal = 24
print(personal)
>> 24
通过后面给定义的变量赋值,我们可以确认变量引用的值发生了变化。
将一个变量赋值给另一个变量
已赋值的变量将替换为该变量在表达式中使用时引用的值。
在下面的示例中,变量 num 被写为 print 函数的参数。由于整数10被赋值给了num,所以在print函数中num+5被替换为10+5并执行。
num = 10
print(num + 5)
您还可以将一个变量分配给另一个变量。在下面的示例中,将 10 赋值给变量 num1 并定义它,这次将变量 num1 赋值给变量 num2 并定义它。
num1 = 10
num2 = num1
在这种情况下,变量 num1 和 num2 将引用存储在同一位置的值 10。
请注意,如果您稍后为变量 num1 分配不同的值,num1 将引用新值,但变量 num2 仍将引用值 10。
数字和字符串等值一旦存储就不能被另一个值替换。当您为 num1 分配一个不同的值时,它不会将新值存储在 num1 曾经引用的位置,而是将新值存储在一个完全不同的位置,即变量 num1 所引用的位置。此时变量 num2 仍然指向原来的位置,所以变量 num1 指向值为 20 的位置,变量 num2 指向值为 10 的位置。
※ 数字和字符串不能替换为新值,但有些数据类型会为变量分配新值,导致新值存储在变量引用的位置
示例代码
请参阅以下示例。
name1 = "Yuhua"
print("name1=" + name1)
>> name1=Yuhua
name2 = name1
print("name1=" + name1)
>> name1=Yuhua
print("name2=" + name2)
>> name2=Yuhua
name1 = "Jiangming"
print("name1=" + name1)
>> name1=Jiangming
print("name2=" + name2)
>> name1=Yuhua
我们已经看到,将一个变量赋值给另一个变量会导致它引用相同的值,而之后赋值另一个值只会导致被赋值的变量引用新值。
累积赋值运算符的类型和用法
可以为变量分配一个值,或对另一个变量执行操作的结果。
price = 120
profit = price * 0.08
此外,在某些情况下,通常会执行诸如将分配给变量的值加 1 并将其重新分配给原始变量的处理。在这种情况下你可以这样写:
count = 0
count = count + 1
如果从左边和右边相等的意义上看【 = 】,会感觉很奇怪,但是【= 】是一个运算符,用于将右边的值赋给左边的变量。因此,通过将变量count引用的值加1并将新值分配给左侧的变量count来执行处理。结果,变量 count 被赋值为 1。
您可以在执行类似这样的操作后编写再次分配原始变量的语句时使用累积赋值运算符。使用累加赋值运算符,前面的例子可以写成:
count = 0
count += 1
不用写count = count + 1,你可以简写成count += 1。这个 += 被称为累加赋值运算符。Python 提供了以下类型的累加赋值运算符:
变量 += 表达式 #变量 = 变量 + 表达式
变量 -= 表达式 #变量 = 变量 - 表达式
变量 *= 表达式 #变量 = 变量 * 表达式
变量/=表达式 #变量=变量/表达式
变量 //= 表达式 #变量 = 变量 // 表达式
变量 %= 表达式 #变量 = 变量 % 表达式
变量 **= 表达式 #变量 = 变量 ** 表达式
变量 >>= 表达式 #变量 = 变量 >> 表达式
变量 <<= 表达式 #变量 = 变量 << 表达式
变量 &= 表达式 #变量 = 变量 & 表达式
变量 ^= 表达式 #变量 = 变量 ^ 表达式
变量 |= 表达式 #变量 = 变量 | 表达式
使用 += 运算符将引用变量的值减去指定值并将其赋值回原变量,或 * 将其乘以指定值并将其赋值回原变量。使用 = 运算符.
示例代码
请看下面的示例。
num = 10
print("num = " + str(num))
>> num = 10
# 将 5 添加到 num
num += 5
print("num = " + str(num))
>> num = 15
# 将 num 乘以 10
num *= 10
print("num = " + str(num))
>> num = 150
我们讲解了用累加赋值运算符的方法,将变量引用的值的运算结果赋值给原变量。
在字符串上使用累加赋值运算符
【+】 运算符用于将字符串进行连接。
str = "Helllo,"
str = str + "Python"
如果想将拼接后的字符串再次赋值给原变量,可以使用累加赋值运算符写成如下形式。
str = "Helllo,"
str += "Python"
此外,【-】 和【 /】 等运算符不能与字符串一起使用,但 * 运算符可用于通过将字符串重复指定次数来创建新字符串。
str = "Good!"
str = str * 4
如果要将重复指定次数的新字符串赋值回原变量,可以使用累加赋值运算符,这样写:
str = "Good!"
str *= 4
这样,累加赋值运算符不仅可以用于数字,也可以用于字符串。
示例代码
请看下面的示例。
str = "Helllo,"
str += "Python"
print(str)
>> Helllo,Python
str = "Good!"
str *= 4
print(str)
>> Good!Good!Good!Good!
我们讲解了累积赋值运算符适用于字符串的方法。
我将解释如何删除使用 del 语句定义的变量,使其无法再使用。
通常情况下,即使你不再使用一个已定义的变量,你也可以保持原样,但如果由于某种原因你想清楚地删除它并使该变量返回未定义的状态,你可以使用del语句。删除。
例如:
例えば次のように使用します。
num = 10
print(num)
del num
曾经定义过的变量num被删除,恢复到定义前的状态。
使用 del 语句删除变量会将变量返回到未定义状态。在再次定义变量之前使用它会引发 NameError。
num = 10
print(num)
>> 10
del num
print(num)
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> NameError: name 'num' is not defined
如果出于某种原因您想取消定义变量,请使用 del 语句。