|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给深度学习入门者的Python快速教程基础篇之变量和引用
/ ]7 g2 K/ O z% q0 y变量和引用3 N# R* Q$ l4 J4 z3 x6 {
6 |7 t/ e- s. h$ p2 K3 }, iPython中基本变量的赋值一般建立的是个引用,比如下面的语句:
! P, E& ^8 x5 ~a = 1' G7 j+ L* k% B2 {$ i5 t9 z$ Y1 N' k
b = a
" u. H) O8 P4 T. a" Jc = 14 g# S& \! {$ A7 v: j+ R9 M4 R
9 a8 c" B1 {6 R Y- w
a赋值为1后,b=a执行时并不会将a的值复制一遍,然后赋给b,而是简单地为a所指的值,也就是1建立了一个引用,相当于a和b都是指向包含1这个值的这块内存的指针。所以c=1执行的也是个引用建立,这三个变量其实是三个引用,指向同一个值。这个逻辑虽然简单,不过也还是常常容易弄混,这没关系,Python内置了id函数,可以返回一个对象的地址,用id函数可以让我们知道每个变量指向的是不是同一个值:
$ `2 P# j, S# [' h+ v7 M! C- Gid(a) # 35556792L
+ r/ B! d; Z7 U. _: R) eid(b) # 35556792L
1 l. a- ]3 A h- V' i6 `& Aid(c) # 35556792L
# {! V) ~0 G7 m2 u3 w. G- D5 `
; {: F6 C7 B. M注释中表示的仍是执行后的结果。如果这时候我们接下面两个语句:" C% l7 u0 `( ?8 r
b = 2 # b的引用到新的一个变量上
) Q, C E. Z( v% v! F& pid(b) # 35556768L
- H, T, B* p2 Q+ d/ d% g) O% H' y6 W0 D% R1 J% n3 v4 l7 e
可以看到b引用到了另一个变量上。 | ; K {; ]. d6 n! Y% H
6 m% p/ f+ ^" }% T9 W) y
2 | x# J. y: O- `2 N2 u8 Z/ W
: p& a* P' S# L( x a3 J* D: F: R. y, n! D
; X1 a+ V( t) d9 x' E
| , Q d8 Q" u+ ?! T2 V
| ' K0 G, ~0 g" S; ?1 Z! V
|
|