Martin

爱设计,爱创造|To design and create

python学习笔记(二)

共享引用

示例(shell模式)

1
2
3
4
5
6
In [1]:a = 3
In [2]:b = a
In [3]:a == b
Out[3]:True
In [4]:a is b
Out[4]True

这两句语句的实际效果就是变量a和b都引用了相同的对象(也就是说,都指向了相同的内存空间

示例(shell模式)

1
2
3
4
5
6
7
In [5]:a = 3
In [6]:b = a
In [7]:a = 'spam'
In [8]:a == b
Out[8]:False
In [9]:a is b
Out[10]:False

变量a引用了由常量表达式‘spam’所创建的新对象,但是变量b仍然引用原始对象3。

示例(shell模式)

1
2
3
4
5
6
7
In [11]:L1 = [2,3,4]
In [12]:L2 = L1
In [13]:L1[0] = 24
In [14]:L1
Out[14]:[24,3,4]
In [15]:L2
Out[15]:[24,3,4]

在这里,没有改变L1,而是改变了L1所引用的对象的一个元素。L1与L2依然指向同一对象,所以对L1、L2都有影响。实际上L2并没有改变,但是它的值发生了变化。

示例(shell模式)

1
2
3
4
5
6
7
In [16]:L1 = [2,3,4]
In [17]:L2 = [:]
In [18]:L1[0] = 24
In [19]:L1
Out[19]:[24,3,4]
In [20]:L2
Out[20]:[2,3,4]

这里L2引用的是L1所引用对象的一个拷贝。也就是说,两个变量都指向了不同的内存区域。如

1
2
3
4
5

### raw字符串抑制转义

```python
In [21]:myfile = open('C:\new\text.dat','w')

一般会认为将会打开C:\new目录下的text.dat文件。问题是这里有’\n’和’\t’。结果是,这个调用时尝试打开一个名为C:(换行)ew(制表符)ext.dat的文件。
所以要这样:

1
In [22]:myfile = open(r'C:\new\text.dat','w')

相当于:

1
In [23]:myfile = open('C:\\new\\text.dat','w')

两个反斜线区保留反斜杠。

字符串格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

格式符 效果
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
%% 字符”%”

Proudly powered by Hexo and Theme by Hacker
© 2021 Martin Yong