Pyhon大法

1.基础知识点:

1)input()函数:

输入函数的返回值类型为:str,如果需要其他数据类型需要转换函数。

2)格式化输出:

使用%:

  • 建立格式化字符串
  • % 变量/元组

格式化操作符:%

  • %s:字符串
  • %d:有符号10进制整数,%06d:表示输出的整数显示6位,不足的地方0补全
  • %f:浮点数——%.02f:表示小数点后显示两位
  • %%:输出%
print("单价:%.02f,重量:%.1f,占比%02d%%" % (2, 1, 1))
单价:2.00,重量:1.0,占比01%

使用format()函数:

# 对于浮点数 '0.333' 保留小数点(.)后三位
print('{0:.3f}'.format(1.0/3))
# 使用下划线填充文本,并保持文字处于中间位置
# 使用 (^) 定义 '___hello___'字符串长度为 11
print('{0:_^11}'.format('hello'))
# 基于关键词输出 'Swaroop wrote A Byte of Python'
print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))

逻辑行与物理行: 如果你有一行非常长的代码,你可以通过使用反斜杠将
其拆分成多个物理行。这被称作显式行连接(Explicit Line Joining)

s = 'This is a string. \
This continues the string.'
print(s)
#输出:This is a string. This continues the string.

3)数据类型:

1.数字型:

  • int
  • float
  • bool
  • complex
    • a = 1 + 2j
    • b = complex(1, 2)
    • a ==b

2.非数字型:

  • 列表
  • 元组
  • 字典
  • 集合
  • 字符串

1)非数字型数据类型特点:

  • 都是序列sequence,可以看为容器
  • 可以使用[]取值;
  • 使用 for in 遍历;
  • 计算长度、最值、比较、删除
  • 链接:+
  • 重复:*
  • 切片:[:]

2)公共方法

3)变量高级

4)列表:

在这里插入图片描述

列表的排序操作,无返回值,只是对列表的操作。

应用场景:

  • 尽管列表可以存储不同类型的数据,但在开发中,
  • 一般使用列表存储相同类型数据;
  • 通过迭代遍历列表;

列表推导:

  • 列表推导(List Comprehension) 用于从一份现有的列表中得到一份新列表。
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print(listtwo)
# 输出:[6, 8]

5)元组:

不可变数据类型

定义:

  • (1,):注意不是(1) == 1 ,int类型
  • 空元组的定义:()——一般不要,因为元组不可变

常用操作:

  • 元组.TAB
  • 元组.count():存在元素的数量
  • 元组.index():存在元素的索引

因为元组变量保存的数据类型一般不一致,所以一般不适用循环遍历,即对不同元素采用相同操作。(除非你知道数据类型一致)

应用场景:

  • 函数的参数和返回值:一次性接收或是返回多个值
  • 格式化字符串:%()
  • 让列表不可以被修改,(将列表转化为元组)以保护数据安全;

list与tuple转换:

  • list(元组)
  • tuple(列表)

6)集合:

定义:

  • set():空集合
  • set(iterable):set(字符串、列表、元组)

7)字典:

定义:{key:value[,key:value……]}

  • key必须是唯一的;
  • value可以取任何数据类型,key只能是字符串、数字或元组(不可变类型)

操作:

  • 取值:
    • dict_name[key] (key不存在会报错)
    • dict_name.get[key] (key不存在会报错)
  • 增加/修改:dict_name[key] = value(key存在修改数据,不存在新建键值对)
  • 删除:
    • dict_name.pop(key):删除指定键值对,key不存在会报错
    • dict_name.popitem():随机删除一个键值对
    • dict_name.clear():清空字典
    • del dict_name[key]:删除指定键值对,key不存在会报错

基本函数:

  • dict_name.keys():所有key列表
  • dict_name.values():所有value列表
  • dict_name.items()所有(key, value) 元组的列表
  • dict_name.setdefault(key, value):如果key存在,不会修改数据;不存在,新建键值对
  • dict_name.update(字典2):将字典2的数据合并到字典1

遍历:

  • for i in dict #i为字段的key
  • for i in dict.values()
  • for i in dict.items() #i为元组
  • for i,j in dict.items() #i,j分别为值

8)字符串

定义:

  • 单引号:字符串中如果有“”,
  • 双引号

空白字符:

  • \r:回车,回行首
  • \n:换行
  • \t:tab

切片:str[开始索引:结束索引:步长]

  • str = [0,1 ,2,3]
  • str[: :-1] #[3,2,1,0]
  • str[0: : -1] #[0] 从0位开始逆序
  • str[-1: :-1] #[3,2,1,0]

元组切片仍是元组

字符串操作:

  • 判断
    • len()
    • 字符串.count(小字符串) #小字符串在字符串中的出现的次数
    • str.index(小字符串) #小字符串第一次出现的索引(前提得有)
      在这里插入图片描述
  • 查找与替换
    在这里插入图片描述
  • 大小写转化
    在这里插入图片描述
    在这里插入图片描述

9)公共方法

在这里插入图片描述
在这里插入图片描述

  • append():方法参数会被当做一个元素加入列表尾部
  • +合并:有新的值产生
  • extend():没有新的值产生

10)完整的for循环

在这里插入图片描述

11)enumerate()

将list变为key-value对;

12)isinstance()

isinstance(待测值,目标) #返回T\F

13)assert 语句

assert 语句用以断言(Assert) 某事是真的。

例如说你非常确定你正在使用的列表中至少包含一个元素,并想确认这一点,如果其不是真的,就抛出一个错误, assert 语句就是这种情况下的理想选择。

当语句断言失败时,将会抛出 AssertionError 。

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError

你应该明智地选用 assert 语句。在大多数情况下,它好过捕获异常,也好过定位问题或向用户显示错误信息然后退出。

2.linux上的shebang符号(#!)

在这里插入图片描述

3.闭包、装饰器、lambda

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431835236741e42daf5af6514f1a8917b8aaadff31bf000

4.生成器 generator

next():next(generator)

  • 不断迭代生成器,每次到下一个yield
  • 直到抛出StopIteration异常

使用 for 迭代:

yield:生成

5.hash()

hash():

  • 接收一个不可变数据类型作为参数:hash(1)
  • 返回一个整数:

作用:

  • 提取数据的特征码(指纹)
  • 即 相同内容—相同结果,不同内容—不同结果

不可变类型:int、str、tuple

可变类型:list、dict

6.类与对象

1.面向对象与面向过程

在这里插入图片描述
在这里插入图片描述

2.类与对象及:类的设计

在这里插入图片描述

类命名的大驼峰命名法:
  • 每个单词首字母大写
  • 单词单词之间没有下划线

在这里插入图片描述
在这里插入图片描述

3.面向对象基础语法

在这里插入图片描述

4.类实例化对象的引用

在这里插入图片描述

5.方法中的self参数

在这里插入图片描述

不推荐在类的外部给对象增加属性,因为对象属性的封装应该封装在类的内部;

哪一个对象调用的方法,self就是哪一个对象的引用;

在这里插入图片描述

6.初始化方法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

类与对象的执行顺序:

  • 跳过类定义;
  • 实例化对象:使用**类名()**创建对象
    • 自动为对象分配内存;
    • 自动执行初始化函数,为对象属性设置初始值;
  • 对象调用方法:哪一个对象调用的方法,self就是哪一个对象的引用
    • 多个对象的方法,在内存中只有一份;
    • 调用时,需要把对象的引用传递到方法内部;
  • 对象在内存中销毁:eg. del 对象名
    • 销毁前,会自动调用 __del__方法

类是一个特殊的对象:(python中一切皆为对象)

  • 1)程序运行时,类同样会被加载到内存中
  • 2)定义类:class AAA——类对象(可以理解为母版)
  • 3)程序运行时,类对象在内存中只有一份
  • 4)除了封装的属性与方法外,类对象还拥有自己的属性与方法 :
    • 类属性
    • 类方法(cls)
  • 5)访问类属性、调用类方法:类名.

类属性与实例属性:

  • 类名.属性
  • self.属性

python中的属性获取机制:向上查找机制——eg.tool1.count

  • 1)在对象 tool1 内部查找对象属性;
  • 2)没有,则向上,在类属性中寻找;

所以,访问类属性有两种方式:

  • 1)类名.类属性
  • 2)对象.类属性(不推荐):
    • 当使用对象.类属性 = 赋值时,只会给对象添加一个属性,而不会影响类属性;

7.内置方法和属性

在这里插入图片描述
在这里插入图片描述

8.封装:

  • 封装是面向对象的一大特点;
  • 面向对象编程的 第一步——将 属性 和 方法 封装到一个抽象的类中;
  • 外界使用类创建对象,然后让对象调用方法;
  • 对象方法的细节都被封装在类的内部

一个对象的属性,可以是另一个类创建的对象:

士兵类的枪属性,可以是枪类的实例

在定义属性时,如果不知道设置什么初始值,可以设置为None
在封装的方法内部,还可以让自己的使用其他类创建的对象属性,调用已经封装好的方法

python中的身份运算符:

  • 身份运算符:用于比较两个对象的内存地址是否一致,是否对同一个对象的引用(id()函数查地址)
  • is、is not;
  • python中针对None的比较,应该使用is
  • 与 == 的区别:用于判断引用变量的值是否相等

9.私有属性与私有方法

在这里插入图片描述

在这里插入图片描述

对象的私有属性: __属性名

  • 在外界不能够被直接访问;
  • 可以再对象方法内部可以访问对象的私有属性。

对象的私有方法: __方法名(self)

  • 在外界不能够被直接访问;

在这里插入图片描述

10.继承

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

方法的重写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.父类的私有属性与私有方法

在这里插入图片描述

12.多继承

在这里插入图片描述
在这里插入图片描述

这种情况下,同名方法按照类的继承顺序,优先调用前面类的方法。

在这里插入图片描述

13.新式类与旧式类

在这里插入图片描述

使用 dir(对象) 查看对象的内置属性与方法(包括继承得来的)。

14.多态

在这里插入图片描述

15.类的结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1)类属性

在这里插入图片描述

在这里插入图片描述

2)类方法

类方法的调用,不需要实例对象,可以直接调用。
在这里插入图片描述

3)静态方法

静态方法的调用,不需要实例对象,可以直接调用。
在这里插入图片描述

在这里插入图片描述

7.单例

单个实例
在这里插入图片描述

__new__方法

为对象分配内存空间
在这里插入图片描述

**问题:**为什么,子类重写__new__方法时,调用父类的静态方法__new__需要传入cls参数?静态方法不是不需要参数么???

在这里插入图片描述
在这里插入图片描述

8.异常

在这里插入图片描述

异常的捕获

在这里插入图片描述

错误类型的捕获

在这里插入图片描述

捕获未知错误

在这里插入图片描述

异常捕获的完整语法

在这里插入图片描述

异常的传递

在这里插入图片描述

抛出异常

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.函数

1)文档注释:

“”" 文档注释 “”"

查看:快速文档——ctrl+Q

2)返回值:return

  • return 表示返回,后续的代码都不会被执行

3)变量的引用:

  • 函数传递的是引用(data地址)

4)全局变量与局部变量

python是不允许在函数内部修改全局变量的值(引用);如果使用赋值语句的话,只是在函数中创建了一个局部变量;

在函数内部修改全局变量的值:

  • global关键字:告诉解释器这是一个全局变量
  • global num

全局变量一般定义在函数之前,定义名建议:

在这里插入图片描述

5)多个参数/返回值:元组

6)注意:函数参数传递的是引用

  • 如果参数传递的是可变类型的参数,如果参数在函数内部重新进行了赋值,则理解为局部变量覆盖原始参数——赋值改变了引用;
  • 如果可变类型参数进行了修改(不是赋值,如追加)——没有改变引用,则实参也会变化
  • 当列表使用+=时:调用的是extend方法,不会修改变量的引用

7)缺省参数:

  • 位置必须在函数参数末尾
  • 调用多个缺省参数时,需要指定参数名

8)元组和字典的拆包

在这里插入图片描述

9)递归

在这里插入图片描述

10)函数没有返回值return时:

返回值为 None——使用print(函数)将会输出None

11)dir 函数

内置的 dir() 函数能够返回由对象所定义的名称列表。 如果这一对象是一个模块,则该列
表会包括函数内所定义的函数、类与变量。

该函数接受参数。 如果参数是模块名称,函数将返回这一指定模块的名称列表。 如果没有提供参数,函数将返回当前模块的名称列表。

10.模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模块的顺序搜索

在这里插入图片描述

模块开发原则

1)模块直接提供的代码(模块中没有任何缩进的代码)能够被直接执行,不是为外界提供的工具。

2)文件被导入时,能够直接执行的代码不需要被执行

3)解决办法:__name__属性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

__name__属性

在主函数main():有一系列测试代码
在这里插入图片描述

11.包

包的创建、导入、使用
在这里插入图片描述

12.发布模块

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

模块卸载时,模块的安装目录:模块.__file__

13.pip包安装

在这里插入图片描述

14.文件操作

.pyc文件:二进制字节码(编译过的)

在这里插入图片描述

在这里插入图片描述

文件的基本操作

在这里插入图片描述

使用with 语句进行文件操作:

在 try 块中获取资源,然后在 finally 块中释放资源是一种常见的模式。因此,还有一个
with 语句使得这一过程可以以一种干净的姿态得以完成。

with open("poem.txt") as f:
	for line in f:
		print(line, end='')

程序输出的内容应与上一个案例所呈现的相同。本例的不同之处在于我们使用的是 open 函数与 with 语句——我们将关闭文件的操作交由 with open 来自动完成。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

文件的打开方式

在这里插入图片描述

在这里插入图片描述

文件复制

小文件复制:
在这里插入图片描述

大文件复制:避免一次性读取文件内容带来的内存压力

在这里插入图片描述

文件/目录的常用管理操作

在这里插入图片描述

15.文本文件的编码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

16.eval函数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值