Python进阶小结

Posted RandySun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶小结相关的知识,希望对你有一定的参考价值。

一、异常

万能捕捉异常公式

try:
    # 逻辑代码
    1/0
except Exception as e:
    print(e)

division by zero

二、深浅拷贝

2.1 拷贝

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

l1 = [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]
l2 = l1

l1.append(\'g\')

print(l1)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\'],\'g\']
print(l2)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\'],\'g\']

如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变

2.2 浅拷贝

import copy


l1 = [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]
l2 = copy.copy(l1)

l1.append(\'g\')

print(l1)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\'],\'g\']
print(l2)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]

l1[3].append(\'g\')

print(l1)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\',\'g\'],\'g\']
print(l2)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\',\'g\']]

如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变

2.3 深拷贝

import copy 


l1 = [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]
l2 = copy.deepcopy(l1)

l1.append(\'g\')

print(l1)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\'],\'g\']
print(l2)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]

l1[3].append(\'g\')

print(l1)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\',\'g\'],\'g\']
print(l2)  # [\'a\',\'b\',\'c\',[\'d\',\'e\',\'f\']]

如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化

三、数据类型内置方法

3.1 数字类型内置方法

3.1.1 整型

  1. 作用:定义年龄/身高/体重/id号
  2. 定义方式:
age = 18
age = int(\'18\') # 含有字符串不可以
  1. 方法: + - * / % // **
  2. 多个值or一个值:一个值
  3. 有序or无序:压根没有有序无序这一说
  4. 可变or不可变:不可变
  • 可变:值变id不变,
  • 可变:值变id也变

3.1.2 浮点型

  1. 作用:定义薪资/价格
  2. 定义方式:
salary = 3.2

salary = float(\'3.2\')
  1. 方法:+ - * / % // **
  2. 多个值or一个值:一个值
  3. 有序or无序:压根没有有序无序这一说
  4. 可变or不可变:不可变

3.2 字符串类型内置方法

  1. 作用:姓名/
  2. 定义方式:
name = \'randy\'
name = "randy"
name = \'\'\'
randy
randy
\'\'\'
name = """
randy
randy
"""
name = "\'randy\'"
name = \'"randy"\'
  1. 方法
    1. 优先掌握
      1. 索引取值
      2. 切片
      3. 长度
      4. 切分split
      5. 除两边空白strip
      6. 成员运算in;not in
      7. for循环
    2. 需要掌握
      1. lstrip/rstrip:左/右除空白
      2. rsplit:从右开始切割
      3. upper/lower:大写/小写
      4. startstwith/endswith:以某开头/以某结尾
      5. join:连接列表为字符串
      6. replace:替换字符
      7. isdigit:判断是否为数字
    3. 了解
      1. find/rfind/index/rindex/count:查找/从右开始查找/索引结果/从右开始索引结果/计数
      2. center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
      3. expantabs:扩展tab键
      4. capitalize/swapcase/title:大写/大小写转换/首字母大写
      5. is系列:略
  2. 多个值or一个值:一个值
  3. 有序or无序:有序
  4. 可变or不可变:不可变

3.3 列表类型内置方法

  1. 作用:多个女朋友/
  2. 定义方式:[]内用逗号隔开多个任意数据类型的元素
friends_list = [\'longzeluola\',\'canglaoshi\',\'qiaobenai\',\'randy\']
lis = list(\'abcd\')
  1. 方法:
    1. 优先掌握
      1. 索引取值(即可取又可改)
      2. 切片
      3. 长度
      4. append
      5. 成员运算
      6. for循环
    2. 需要掌握
      1. count:元素个数计数
      2. remove:移除元素
      3. reverse:反转列表
      4. pop:删除元素
      5. insert:插入元素
      6. sort:列表排序
      7. index:索引元素
      8. del:删除元素
      9. extend:扩展列表
      10. clear:清除列表
  2. 多个值or一个值:多个值
  3. 有序or无序:有序
  4. 可变or不可变:可变

3.4 元祖类型内置方法

  1. 作用:类似于列表,可以取不可以存
  2. 定义方式:
friends_tuple = (\'longzeluola\',\'canglaoshi\',\'qiaobenai\',\'randy\')
tup = tuple(\'abcd\')
  1. 方法
    1. 优先掌握
      1. 索引取值(无法更改)
      2. 切片
      3. 长度
      4. 成员运算
      5. for循环
      6. count:元素个数计数
      7. index:元素位置索引
  2. 多个值or一个值:多个值
  3. 有序or无序:有序
  4. 可变or不可变:不可变

3.5 字典类型内置方法#

  1. 作用:值太多列表存容易,取麻烦时使用字典
  2. 定义方式:
randy_info_dict = {
\'name\':\'randy\',
\'height\':180,
\'weight\':140,
\'hobby_list\':[\'read\',\'run\',\'music\',\'fishing\',\'programming\',\'coding\',\'debugging\']
}

for k,v in nick_info_dict.items():
    print(k,v)
  1. 方法
    1. 优先掌握
      1. 按键取值
      2. 长度
      3. keys/values/items
      4. for循环
      5. 成员运算
    2. 需要掌握
      1. pop:删除元素
      2. fromkeys:由一个列表生成一个字典,默认值为None
      3. setdefault:有指定key不会改变值;无指定key则改变值
      4. get:通过key获取value,无key默认获取None
      5. update:扩展字典,重复则覆盖
      6. del:删除字典键值对
  2. 多个值or一个值:多个值
  3. 有序or无序:无序
  4. 可变or不可变:可变

3.6 集合类型内置方法

  1. 作用:存多个值,为了集合之间做运算
  2. 定义方式:
s = set()

s = {1,2,3,4,5,1}
  1. 方法:
    1. 优先掌握
      1. 去重
      2. 并集 |
      3. 交集 &
      4. 差集 -
      5. 对称差集 ^
      6. 父集 >;>=
      7. 子集 <&emsp;<=
      8. ==
    2. 需要掌握
      1. add:添加元素
      2. difference_update:更新该集合没有的元素
      3. isdisjoint:如果两个元素交集为空返回True,否则返回False
      4. remove:移除元素 # 值不存在会报错
      5. discard :移除元素 # 不会报错
  2. 多个值or一个值:多个值
  3. 有序or无序:无序
  4. 可变or不可变:可变

3.7 布尔类型

1.作用:一般用于判断,除了0/None/空/False自带布尔值为False,其他的数据类型自带布尔值为True

四、数据类型分类

4.1 按值个数

一个值 多个值
整型/浮点型/字符串 列表/元祖/字典/集合/

4.2 按有序无

有序 无序
字符串/列表/元祖 字典/集合

4.3 按可变不可变

可变 不可变
列表/字典/集合 整型/浮点型/字符串

以上是关于Python进阶小结的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶闭包(Closure)

PYTHON-进阶-装饰器小结,转载

Python进阶装饰器(Decorator)

Python搭建本地静态Web服务器(多任务进阶版)

Python进阶篇:Python简单爬虫

Python进阶如何修改闭包内使用的外部变量?