浅谈python中的变量赋值
2个回答
展开全部
在python中,变量赋值的语法比较简单,语法就是 “变量名 = 对象”,由于python属于动态语音,所以不需要像c、 java那样在变量赋值时需要声明变量的类型。
c 变量赋值
int x = 1;
python 变量赋值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 变量赋值中,所涉及到的变量命名是有一定规则的:
1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为name_1,但不能将其命名为1_name
2. 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名name_one可行,但变量名name one会引发错误。
3. 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如not、pass等。
4. 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 虽说简短好,但是不能依照自己的意愿随意简写,尽量使用大家约定俗成的简写,如果不是还不如写全拼。
5. python 变量名中大小写敏感,所以 NAME, Name, name 代表三个不同的表里名, 这里提一下就是慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
再说变量赋值中赋予给变量的值,python中万事皆对象,所以python中只要是对象就能给变量赋值。如:
x = 1 # x赋值为数字1;
x = sum # x赋值为内建求和函数sum;
python的赋值真实上说应该不是赋值,而更像是“引用”,如何理解“引用”呢,python中一直对象的生成是会在内存中分配给一个内存地址,这个内存地址可以使用id()方法去获取,然后在变量赋值时,将变量直接引用该对象的内存地址,进而完成变量赋值,如:
x = 1, 赋值时x直接引用1所在内存的地址, y = x, 此时是y直接引用x的所指向的内存地址
python中有判断变量的方法如 is() 和 ==,二者在判断变量时是有区别的,is函数是判断变量的内存地址是否相同,而 == 是判断变量的值是否相同,举例说明:
a = 1; b = 1.0
a is b # False
a == b # True
小心python变量赋值的陷阱
看到上面的所述知道了python变量赋值实则是引用,引用的是对象的内存地址。所赋的值可以分两类,一类是可变的,如列表,字典,集合;一类是不可变的,如字符串、元组。所以当对象为可变类型时就会出现一种情景,我们举例说明:
x = [1, 2, 3]
y = x
print x == y # True
print x is y # True
print x # [1, 2, 3]
print y # [1, 2, 3]
y.append(4)
print x # [1, 2, 3, 4]
print y # [1, 2, 3, 4]
可以看到y在进行调整时(添加了一个元素),x也跟着变动了,这进一步说明了,python中的变量赋值时引用,x,y 赋值时指向了同一处内存地址,所以当y变动时,x同样也发送了变化,解决这中现象的方法可以是x, y = [1,2,3], [1,2,3]这样赋值,虽说此时 x==y 是True,但是确实是2个不同的内存地址,所以 x is y 则是 False。或者可以使用copy模块,实质是相同的,创建2个不同的内存地址,使其分离。
c 变量赋值
int x = 1;
python 变量赋值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 变量赋值中,所涉及到的变量命名是有一定规则的:
1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为name_1,但不能将其命名为1_name
2. 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名name_one可行,但变量名name one会引发错误。
3. 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如not、pass等。
4. 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 虽说简短好,但是不能依照自己的意愿随意简写,尽量使用大家约定俗成的简写,如果不是还不如写全拼。
5. python 变量名中大小写敏感,所以 NAME, Name, name 代表三个不同的表里名, 这里提一下就是慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
再说变量赋值中赋予给变量的值,python中万事皆对象,所以python中只要是对象就能给变量赋值。如:
x = 1 # x赋值为数字1;
x = sum # x赋值为内建求和函数sum;
python的赋值真实上说应该不是赋值,而更像是“引用”,如何理解“引用”呢,python中一直对象的生成是会在内存中分配给一个内存地址,这个内存地址可以使用id()方法去获取,然后在变量赋值时,将变量直接引用该对象的内存地址,进而完成变量赋值,如:
x = 1, 赋值时x直接引用1所在内存的地址, y = x, 此时是y直接引用x的所指向的内存地址
python中有判断变量的方法如 is() 和 ==,二者在判断变量时是有区别的,is函数是判断变量的内存地址是否相同,而 == 是判断变量的值是否相同,举例说明:
a = 1; b = 1.0
a is b # False
a == b # True
小心python变量赋值的陷阱
看到上面的所述知道了python变量赋值实则是引用,引用的是对象的内存地址。所赋的值可以分两类,一类是可变的,如列表,字典,集合;一类是不可变的,如字符串、元组。所以当对象为可变类型时就会出现一种情景,我们举例说明:
x = [1, 2, 3]
y = x
print x == y # True
print x is y # True
print x # [1, 2, 3]
print y # [1, 2, 3]
y.append(4)
print x # [1, 2, 3, 4]
print y # [1, 2, 3, 4]
可以看到y在进行调整时(添加了一个元素),x也跟着变动了,这进一步说明了,python中的变量赋值时引用,x,y 赋值时指向了同一处内存地址,所以当y变动时,x同样也发送了变化,解决这中现象的方法可以是x, y = [1,2,3], [1,2,3]这样赋值,虽说此时 x==y 是True,但是确实是2个不同的内存地址,所以 x is y 则是 False。或者可以使用copy模块,实质是相同的,创建2个不同的内存地址,使其分离。
展开全部
1、简单赋值
简单赋值是Python中最基本的赋值方式。它的语法很简单,只需要将变量名和赋值运算符=之间加上要赋给变量的值即可。例如:
'''
x=10
y='hello world'
'''
在这个例子中,变量x被赋值为10,变量y被赋值为字符串'Hello
world'。简单赋值适用于所有数据类型,包括数字、字符串、列表、元组和字典等。它的优点是语法简单,易于理解和使用。但是它也有一些缺点,比如它不能同时为多个变量赋值,也不能用于解包操作。
2、元组赋值
元组赋值是一种非常方便的赋值方式。它可以同时为多个变量赋值,并且可以用于解包操作。元组赋值的语法是将多个变量名用逗号分隔,并用一对圆括号括起来,然后用等号将其与一个元组对象进行赋值。例如:
'''
x,y,z=10,20,30
'''
在这个例子中,变量x被赋值为10,变量y被赋值为20,变量z被赋值为30。元组赋值可以用于交换两个变量的值,也可以用于函数返回多个值时的解包操作,非常实用。
3、序列解包赋值
序列解包赋值是一种特殊的元组赋值方式,它可以将一个序列对象中的值一一赋给多个变量。序列解包赋值的语法是将多个变量名用逗号分隔,并用一对方括号括起来,然后用等号将其与一个序列对象进行赋值。例如:
'''
[x,y,z]=[10,20,30]
'''
在这个例子中,变量x被赋值为10,变量y被赋值为20,变量z被赋值为30。序列解包赋值可以用于对列表、元组和字符串等序列对象进行解包操作,也可以用于迭代操作。
简单赋值是Python中最基本的赋值方式。它的语法很简单,只需要将变量名和赋值运算符=之间加上要赋给变量的值即可。例如:
'''
x=10
y='hello world'
'''
在这个例子中,变量x被赋值为10,变量y被赋值为字符串'Hello
world'。简单赋值适用于所有数据类型,包括数字、字符串、列表、元组和字典等。它的优点是语法简单,易于理解和使用。但是它也有一些缺点,比如它不能同时为多个变量赋值,也不能用于解包操作。
2、元组赋值
元组赋值是一种非常方便的赋值方式。它可以同时为多个变量赋值,并且可以用于解包操作。元组赋值的语法是将多个变量名用逗号分隔,并用一对圆括号括起来,然后用等号将其与一个元组对象进行赋值。例如:
'''
x,y,z=10,20,30
'''
在这个例子中,变量x被赋值为10,变量y被赋值为20,变量z被赋值为30。元组赋值可以用于交换两个变量的值,也可以用于函数返回多个值时的解包操作,非常实用。
3、序列解包赋值
序列解包赋值是一种特殊的元组赋值方式,它可以将一个序列对象中的值一一赋给多个变量。序列解包赋值的语法是将多个变量名用逗号分隔,并用一对方括号括起来,然后用等号将其与一个序列对象进行赋值。例如:
'''
[x,y,z]=[10,20,30]
'''
在这个例子中,变量x被赋值为10,变量y被赋值为20,变量z被赋值为30。序列解包赋值可以用于对列表、元组和字符串等序列对象进行解包操作,也可以用于迭代操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询