前言:
此时小伙伴们对“c语言字符型变量的赋值规则”可能比较重视,朋友们都想要知道一些“c语言字符型变量的赋值规则”的相关文章。那么小编在网络上收集了一些有关“c语言字符型变量的赋值规则””的相关内容,希望兄弟们能喜欢,我们一起来了解一下吧!要在 Python 中创建变量,只需指定变量名,然后赋值即可。
<变量名> = <变量值>
Python 使用 = 为变量赋值。无需事先声明变量(或为变量赋值数据类型),为变量赋值本身就声明了变量并用该值初始化了变量。如果不为变量赋值,就无法声明变量。
# 整数a = 2print(a)# 输出: 2# 整数b = 9223372036854775807print(b)# 输出: 9223372036854775807# 浮点数pi = 3.14print(pi)# 输出: 3.14# 字符串c = 'A'print(c)# 输出: A# 字符串name = 'John Doe'print(name)# 输出: John Doe# 布尔值q = Trueprint(q)# 输出: True# 空值或空数据类型x = Noneprint(x)# 输出: None
变量赋值是从左向右进行的。因此,下面的代码会出现语法错误。
0 = x=> Output: SyntaxError: can't assign to literal
您不能使用 python 的关键字作为有效的变量名。您可以通过以下方式查看关键字列表:
import keywordprint(keyword.kwlist)
变量命名规则:变量名必须以字母或下划线开头。
x = True # valid_y = True # valid9x = False # starts with numeral=> SyntaxError: invalid syntax$y = False # starts with symbol=> SyntaxError: invalid syntax
变量名的其余部分可以由字母、数字和下划线组成。
has_0_in_it = "Still Valid"
名称区分大小写。
x = 9y = X * 5=>NameError: name 'X' is not defined
尽管在 Python 中声明变量时不需要指定数据类型,但在为变量分配必要的内存区域时,Python 解释器会自动为其选择最合适的内置类型:
a = 2print(type(a))# 输出: <type 'int'>b = 9223372036854775807print(type(b))# 输出: <type 'int'>pi = 3.14print(type(pi))# 输出: <type 'float'>c = 'A'print(type(c))# 输出: <type 'str'>name = 'John Doe'print(type(name))# 输出: <type 'str'>q = Trueprint(type(q))# 输出: <type 'bool'>x = Noneprint(type(x))# 输出: <type 'NoneType'>
现在你知道了赋值的基础知识,让我们来了解一下 Python 中赋值的微妙之处。
当你使用 = 进行赋值操作时,在 = 左边的是右边对象的名称。最后,= 的作用是将右边对象的引用赋值给左边的名称。
也就是说
a_name = an_object # "a_name" 现在是对象 "an_object" 引用的名称
因此,从上面的许多赋值示例中,如果我们选择 pi = 3.14,那么 pi 就是对象 3.14 的一个变量名(不是名称,因为一个对象可以有多个变量名)。如果你对下面的内容有不明白的地方,请回过头来再读一遍!此外,你还可以看看这个,以便更好地理解。
您可以在一行中为多个变量赋值。请注意,在 = 操作符的左右两边必须有相同数量的参数:
a, b, c = 1, 2, 3print(a, b, c)# 输出: 1 2 3a, b, c = 1, 2=> Traceback (most recent call last):=> File "name.py", line N, in <module>=> a, b, c = 1, 2=> ValueError: need more than 2 values to unpacka, b = 1, 2, 3=> Traceback (most recent call last):=> File "name.py", line N, in <module>=> a, b = 1, 2, 3=> ValueError: too many values to unpack
通过将剩余的值赋值给等量的任意变量,可以避免上一个示例中的错误。
这个虚拟变量可以有任何名称,但常规的做法是使用下划线 (_) 来分配不需要的值。
例如:
a, b, _ = 1, 2, 3print(a, b)# 输出: 1, 2
注意 _ 的数量和剩余值的数量必须相等。否则,将如下面所述会抛出 “太多值无法解包错误”(ValueError: too many values to unpack):
a, b, _ = 1,2,3,4=>Traceback (most recent call last):=>File "name.py", line N, in <module>=>a, b, _ = 1,2,3,4=>ValueError: too many values to unpack (expected 3)
您还可以同时为多个变量赋值。
a = b = c = 1print(a, b, c)# 输出: 1 1 1
换句话说,a、b 和 c 是同一个 int 对象的三个不同名称。之后为其中一个变量指定一个不同的对象并不会改变其他变量,正如预期的那样:
a = b = c = 1 # 所有三个名称 a、b 和 c 都指向同一个值为 1 的 int 对象print(a, b, c)# 输出: 1 1 1b = 2 # b 现在指向另一个 int 对象,一个值为 2 的对象print(a, b, c)# 输出: 1 2 1 # 因此输出结果与预期一致。
对于可变类型(如 list、dict 等)和不可变类型(如 int、string、tuple 等)来说,上述原则同样适用:
x = y = [7, 8, 9] # x 和 y 指向刚刚创建的同一个列表对象、 [7, 8, 9]x = [13, 8, 9] # x 现在指的是刚刚创建的另一个列表对象、 [13, 8, 9]print(y) # y 仍然指最初分配给它的列表# 输出: [7, 8, 9]
到目前为止一切顺利。当层叠赋值用于可变类型时,在修改对象时(与将名称赋值给另一个对象相反,我们在上面做了),情况就有些不同了。请看下面的内容,你会有切身体会:
x = y = [7, 8, 9] # x 和 y 是刚刚创建的同一个列表对象的两个不同名称、 [7, 8, 9]x[0] = 13 # 我们正在通过列表 [7, 8, 9] 中的一个名称(这里是 x)更新列表 [7, 8, 9] 的值print(y) # 使用列表的另一个名称打印列表值# 输出: [13, 8, 9] # 因此,变化自然会反映出来
嵌套列表在 python 中也是有效的。这意味着一个 list 可以包含另一个 list 作为元素。
x = [1, 2, [3, 4, 5], 6, 7] # this is nested listprint(x[2])# 输出: [3, 4, 5]print(x[2][1])# 输出: 4
最后,Python 中的变量不一定要保持与最初定义时相同的类型 -- 您可以简单地使用 = 给变量赋一个新值,即使这个值是不同的类型。
a = 2print(a)# 输出: 2a = "New value"print(a)# 输出: New value
如果你对此感到困扰,请想一想 = 左边的内容只是一个对象的名称。起初,你调用值为 2 的 int 对象 a,然后你改变主意,决定将名称 a 赋予值为 “新值 ”的字符串对象。很简单吧?
标签: #c语言字符型变量的赋值规则