Python自学指南---基础篇(二)变量赋值

2.1 赋值运算符(=),引用传递

我们可以直接将一个固定的数值、字符串、算术表达式、甚至函数赋值给一个变量,也可将一个变量赋值给另一个变量。

anInt = 1
aStr = 'abc'
aFloat = 4 * 5 * 6
aList = [1, 'who', 3.14]

这里需要提到一个非常基础且重要的知识点,在Python中,所有的变量都可以理解是内存中一个对象的“引用”,变量的赋值是引用传递,而非值传递

可以把变量是内存中一个对象的“引用”,简单理解为给对象取了一个名字,或者打上了一个标签,比如a=1,就是将对象“1”起名为“a”。很多地方会采用一种说法:a指向1。

可以通过一个例子来理解:

a = 1
id(a)  #id(…)用于输出变量的地址,此处输出变量a的地址
b = 2
id(b)
b = a
id(b)
print(b)

这段代码输出的结果是:

140360412074952
140360412074928  #b的初始地址
140360412074952  #b的地址变为与a相同
1              

利用id(…)可以输出某一个变量的地址,可以发现在执行了b = a之后,b不仅与a的值相同,b的地址也与a相同,这也就体现了Python的赋值是“引用传递”,即此时b是a的一个别名,这两个变量所保存的对象是一个对象(地址相同)
如果在C++中执行b = a,就会产生不同的结果

int a = 1;
int b = 2;
cout<<&a<<endl;  //c++中利用&取变量地址
cout<<&b<<endl;
b = a
cout<<&b<<endl;
cout<<b<<endl;

输出结果:

0x7ffcb30f82fc 
0x7ffcb30f82f8
0x7ffcb30f82f8 
1   //b只改变了值,地址未改变

可见,C++中相同语句b=a执行的就是值传递,b只有值与a相同。
Python中引用传递的概念先提这么多,在之后介绍对象、函数的过程中会再次遇到。

2.2 一般的赋值语法

Python除了可以直接将一个值或变量赋值给另一个变量之外,也有许多其他的赋值语法。

  1. 链式赋值
a = b = c = 1
  1. 增量赋值
a += 1  #等价于a = a + 1
a %= 2  #等价于a = a % 2

需要注意的是Python不支持类似于这样的自增运算符:x++ ++x

  1. 多元赋值
    多元赋值的特性允许一个语句对多个变量分别赋不同值
a, b, c = 1, 2, 3 # a = 1, b = 2, c = 3

这时等号两边的对象实际上都是一个元组(tuple),即一个不可变的序列集合,因此严格来说,上述代码原本的形式是:

(a, b, c) = (1, 2, 3)

当然不加小括号在语法上不会有错误,《Python核心编程》中建议添加小括号,以增强可读性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值