python进阶

python进阶

异常

捕捉异常

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

抛出异常raise

try:
    a = 10
    b = 0
    # print(a/b)
except Exception as e:
    print(e)
    raise e
else:
    print("ok")
finally:
    print("end")

当raise异常,程序中断

str容易遗忘,重点内置方法

1.按索引取值

2.切片(顾头不顾尾,步长)

# 索引切片
msg = 'hello nick'
# 0123456789  # 索引序号
print(f'切片: {msg[0:9:1]}')
print(f'切片: {msg[0:9:2]}')
print(f'切片: {msg[0:9:-1]}')
print(f'切片: {msg[-1:-10:1]}')
print(f'切片: {msg[-1:-10:-1]}')
print(f'切片: {msg[-1:-10:-2]}')
# 了解,步长为正从左到右;步长为负从右到左
print('
**了解知识点**')
print(f'切片所有: {msg[:]}')
print(f'反转所有: {msg[::-1]}')
print(f'切片-5--2: {msg[-5:-2:1]}')
print(f'切片-2--5: {msg[-2:-5:-1]}')

3.长度len(str)

4.成员运算in和not in

5.移出空白strip(str)

6.切分.split

7.遍历

msg = 'hello nick'
for i in msg:
    print(i)

h
e
l
l
o
n
i
c
k

lstrip&rstrip 去除左右两边指定字符

# str之lstrip()和rstrip()
name = '&&nick&&'

print(f"nick.lstrip('&'): {name.lstrip('&')}")
print(f"nick.rstrip('&'): {name.rstrip('&')}")

nick.lstrip('&'): nick&&
nick.rstrip('&'): &&nick

lower&upper

startswith&endswith 是否又指定字符开头或者结尾,区分大小写

rsplit 从右开始切割

join 字符串拼接,数字不能与字符串拼接

replace

isdigit 是否可以转化成整数

列表的内置方法(list)[]

1.按索引取值(正向取值+反向取值),即可存也可以取

2.切片

3.长度len

4.成员运算in和not in

5.追加append

6.删除del

7.循环

需要掌握

1.insert

根据索引插入,在之前插入

2.pop

list之pop(),pop()默认删除最后一个元素,可按索引删除,并返回删除字符的值

name_list.remove('nick'): None
name_list: ['jason', 'tank', 'sean']

3.remove

根据值删除,删除返回none

name_list.remove('nick'): None
name_list: ['jason', 'tank', 'sean']

4.count

name_list.count('nick'): 1

5.index

name_list.index('nick'): 0

6.clear

清空list

7.copy

list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list3=list1
list2 = list1.copy()
print ("list2 列表: ", list2)
print(id(list1))
print(id(list2))
print(id(list3))

list2 列表: ['Google', 'Runoob', 'Taobao', 'Baidu']
2099324874376
2099324896456
2099324874376

8.extend

name_list = ['nick', 'jason', 'tank', 'sean']
print(id(name_list))
name_list2 = ['nick handsome']
name_list.extend(name_list2)
print(name_list)
print(id(name_list))

2246807243080
['nick', 'jason', 'tank', 'sean', 'nick handsome']
2246807243080

9.reverse

list反一下

10sort

元组(tuple)()

元组是不可变的列表,即元组的值不可更改,因此元组一般只用于只存不取的需求。也因此元组可以被列表取代掉,所以元组相比较列表使用的很少。元组相比较列表的优点为:列表的值修改后,列表的结构将会发生改变,而元组只需要存储,因此列表在某种程度上而言需要占用更多的内存。但是目前工业上内存已经不是问题了,所以工业上元组一般不会使用。

字典的内置方法(dict){}

按key存取值:可存可取

长度len

成员运算in和not in

只能判断有没有key

删除del

del dic['a']

dic.pop('a') # 指定元素删除

键keys()、值values()、键值对items()

dic = {'a': 1, 'b': 2}

print(f"dic.keys(): {dic.keys()}")
print(f"dic.values(): {dic.values()}")
print(f"dic.items(): {dic.items()}")

dic.keys(): dict_keys(['a', 'b'])
dic.values(): dict_values([1, 2])
dic.items(): dict_items([('a', 1), ('b', 2)])

循环

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
list=[[1,2,5,6],[3,4,6,0]]
for k,*_,c in list:
    print(k,*_,c)
for k, v in dic.items():  # items可以换成keys()、values()
    print(k, v)

循环原理就是解压缩

get

dic.get('a'): 1
dic.get('c'): None

update

可以用于添加

fromkeys

dic = dict.fromkeys(['name', 'age', 'sex'], None)

print(f"dic: {dic}")

dic: {'name': None, 'age': None, 'sex': None}

setdefault

有指定key不会改变值;无指定key则改变值

set{}

长度len

成员运算in和not in

|并集、union

&交集、intersection

-差集、difference

^对称差集、symmetric_difference

==

父集:>、>= 、issuperset

子集:<、<= 、issubse

add

remove

difference_update

discard

isdisjoin

Python深浅拷贝

拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的

原文地址:https://www.cnblogs.com/zx125/p/11283322.html