1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
一个很好的例子:
# -*-coding:utf-8 -*-
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
介绍一下except的用法和作用?
Python的except用来捕获所有异常, 因为Python里面的每次错误都会抛出 一个异常,所以每个程序的错误都被当作一个运行时错误。
一下是使用except的一个例子:
try:
foo = opne(“file”) #open被错写为opne
except:
sys.exit(“could not open file!”)
因为这个错误是由于open被拼写成opne而造成的,然后被except捕获,所以debug程序的时候很容易不知道出了什么问题
下面这个例子更好点:
try:
foo = opne(“file”) # 这时候except只捕获IOError
except IOError:
sys.exit(“could not open file”)
Python中pass语句的作用是什么?
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如:
while False:
pass
pass通常用来创建一个最简单的类:
class MyEmptyClass:
pass
pass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如:
def initlog(*args):
pass #please implement this
介绍一下Python下range()函数的用法?
>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]
单引号,双引号,三引号的区别
单引号跟双引号的普通用法是相同的, 就是跟C++语言里面用双引号表示字符串字面量的用法一样
eg:
(1) str1 = 'aaa' (等价于str = "aaa")
(2) str2 = 'aaa,/
bbb'
(等价于str2 = "aaa,/
bbb")
打印str1, str2 分别是
aaa
aaa,bbb
2 单引号跟双引号的区别主要体现在当用单引号包起来的字符串里包含"的时候, 不需要使用转义符(/), 反过来也是一样
(1) str1 = 'aaa"bbb'
(2) str2 = "aaa'bbb"
打印str1, str2分别是
aaa"bbb
aaa'bbb
3 三引号有两种形式(""字符串内容""", 或者'''字符串内容''')
<1>这两种形式的用法几乎没有区别, 但是要严格来说的话, 也是有上面那样的区别
str1 = '''aaa"""bbb'''(等价于"""aaa/"""bbb""")
str2 = """aaa'''bbb"""(等价于'''aaa/'''bbb''')
<2>三引号的核心用法主要体现在跨行的字符串上, 会包含两个界定符号之间的所有字符,包括看得见的, 看不见的, 如回车换行符
str1 = '''aaa
bbb'''
打印 str1
aaa
bbb
基于三引号的这种特性, 当需要格式化输入多行字符的时候可以减少转义字符的输入,
<3>还有就是pytho没有多行注释符号, 一般用三引号代替
如何用Python来进行查询和替换一个文本字符串?
可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0])
replacement是被替换成的文本
string是需要被替换的文本
count是一个可选参数,指最大被替换的数量
例子:
import re
p = re.compile(‘(blue|white|red)’)
print(p.sub(‘colour’,'blue socks and red shoes’))
print(p.sub(‘colour’,'blue socks and red shoes’, count=1))
输出:
colour socks and colour shoes
colour socks and red shoes
subn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量
例如:
import re
p = re.compile(‘(blue|white|red)’)
print(p.subn(‘colour’,'blue socks and red shoes’))
print(p.subn(‘colour’,'blue socks and red shoes’, count=1))
输出
(‘colour socks and colour shoes’, 2)
(‘colour socks and red shoes’, 1)