python重点知识总结_python知识点总结

简介

特点

可移植性:可以移植到许多平台

可扩展行:可以使用C/C++完成部分程序

可嵌入:可以将Python嵌入到C/C++程序。让你的程序的用户获得“脚本化”的能力

基础语法

注释:单行用# 多行用”””或’’‘

行与缩减:不通过{},通过代码缩减 缩进的空格数没有固定,但是同一块级代码缩进要一样

python通常是一行一个语句,如果一行放不下,可以通过反斜线(\)换行

total = item_one+ \

item_two+ \

item_thtree

在[] {} () 不需要使用反斜线

数字类型 int bool float complex 整型 布尔 浮点 复数

字符串

单引号 双引号 三引号(多行文字)都可以

字符串支持两种索引,从左到右 0开始,从右到左-1开始

字符串不能改变

字符串后面加上(*数字) 标识输出字符串几次

子串 str[2:5]输出第三个开始到第五个字符串

str = tmlong

print(str)

print(str[0:-1)) #输出第一个到倒数第二个

print(str[0]) #输出第一个字符

print(str[1,4])#输出第二个到第4个字符

print(str[2:])#从第三个开始输

print(str[str*2])#输出字符串两次

print(str+'你好’)#连接字符串

print(‘hello\n tmlong’) #换行

print(r‘hello\n tmlong’) #在字符前加r表示原生字符串,不会转义

函数之间或类的分隔加上空行 不是语法强制,便于后期维护

一行可以显示多条语句 用分号(;)分隔

print默认换行 如果不换行print(‘abc’,end=“")

命令行查看帮助信息 python -h

基本属于类型

可以多个变量赋值 a = b = c = 1

可以多个对象指定多个变量 a, b, c =1, 2, ’nice

标准数据类型

Number(数字) Sring(字符串) List(列表) Tuple(元组) Set(集合) Direction(字典)

可变:List Set Direction

不可变:Number String Tuple

Number

支持 int float bool complex

type(a)可以查看变量类型 或者 isinstance(1,int)

type 不会认为子类是一种父类类型 isinstance反之

py2没有bool 只有0 ,1,不过在数字操作都被当做数字加减

>>>3 * 7

21

>>> 2/4 除法 得到一个浮点数

0.5

>>> 2//4 除法去整

0

>>> 17 % 3 取余

2

>>> 2 ** 5 乘方

32

混合运算的时候会把整型转为浮点型

String

List 列表,

* 列表里的元素的类型可以不同 列表里面可以嵌套列表

* 列表操作和字符串操作查询操作都差不多一样,不过和字符串不一样,列表是可以修改的

* 列表截取可以接收第三个参数,第三个参数是步长 letters = [1,2,3,4,5] letters[0:4:2] 输出的是 1和3

Tuple

* 元组和列表相似,不同之处在于不可更改,用小括号括起tubble = (1,2,3,4)

* 元素虽然不可以改变,但是可以包含可变对象,比如list

* 特殊:tup1=()#空元组 tup2=(20,)#一个元素后面要添加逗号

Set

* 集合创建可以用{} 或者Set()创建,不过空集合只能用Set() ,{}表示空字典

* 集合中 重复的元素会自动被去掉

student = {1,2,3,4,5} #声明

if 1 in student:

print(‘在集合里’)

a = Set(‘abracadabra’)

b = Set(‘alacazam’)

print(a) # {‘b',’a’,’c’,’r’,’d}

print(a-b)

print(a | b)

print(a & b)

print(a ^ b)#不同是存在元素

Dictionary(字典)

* 字典是无需对象集合,列表时有序对象集合,存取通过key

* 一个字典里 key是唯一的,声明一个空字典{}

dict = {}

dict[‘one] = ‘1-haha’

dict[2] = ‘2-heihei’

tinydict = {’name’:1,’sex’:2}

print(dict[‘one’])

print(dict)

print(tinydict.keys())

print(tinydict.values())#所有值

dict([(‘hah’:1),(‘aa’:2),(‘kk’:3)]) #构造函数创建

数据类型转换(类型名的方法)

运算符

比较运算法 ==, !=, >, <, >=, <=

赋值运算 =, +=, -=, =, /=, %=,*=(幂) //=(取整)

位运算 &, |, ^, ~,<<, >>

逻辑运算 and or not

成员运算符 in ,not in

身份运算符 is(两个标识符是否引用一个对象) ,not is (ps:is 和== 差别: == 用来判断值是否相等)

Number

//得到的并一定是是整数 和分母分子有关 如果两个有一个浮点,返回就是浮点

数学函数 abs() ceil()向上取整 floor向下取整…...

List

包含函数:len(list) max(list) list(seq) 将元组换为列表

方法:list.append(obj) 在列表末尾添加新对象 …...

迭代器与生成器

元组,list,字符串都可创建迭代器 iter()

>>>lista = [1,2,3,4]

>>>it = iter(lista)

>>>print(next(it)) #输出迭代器的下一个元素

1

>>>print(next(it))

2

创建一个迭代器(把一个类作为迭代器)

实现 __iter__() 和__next__() 方法

生成器:使用了yield的函数成为生成器,生成器是一个返回迭代器的函数

每次运行到yield函数都会暂停并保存当前所有运行信息

函数

python函数参数传递

不可变类型(整数,字符串,元组)fun(a),传递知识a的值,改变a不会影响到传递进来参数a,实际上是复制了

可变类型(list 字典)

参数

关键字参数

默认参数

不定长参数

>>>def printinfo(name,age):# 关键字参数

>>> print(‘名字:’,name)

>>> print(’年龄’,age)

>>> return

>>>printinfo(age=50,name=‘aa’)

>>>def printinfo(name,age=50):#默认参数

>>> pass

>>>printinfo(name=‘aa’)

>>>printinfo(name=’11’,age=100)

>>>def printinfo(arg1,*vartuple):#不定长参数

>>> print(arg1)

>>> print(vartuple)

>>> pass

>>>printinfo(1,2,3)

1

(2,3)

*号参数会以元组的形式传入

>>>def printinfo(arg1,**vardict):

>>> print(arg1)

>>> print(vardict)

>>>printinfo(1,a=2,b=3)

1

{a:2,b:3}

**参数会以字典的形式传入

匿名函数 lambda

lamdba arg1,arg2:arg1+arg2

>>> def f(a,b,*,c)

>>> return a+b+c

>>> f(1,2,c=3)

6

单独出现星号*后必须用关键字传入

数据结构

可以把列表当做栈 当作队列

列表推导式

从序列创建列表的简单途径

>>>vec1 = [2,4,6]

>>>vec2 = [4,3,-9]

>>>[x*y for x in vec1 for y in vec2]

[8,6,-18,16,12,-36,24,18,-54]

在列表遍历 索引位置和对应值可以同时得到 enumerate()

>>> for i,v enumerate([‘a’,’b’,’c’])

>>> print(i,v)

0 a

1 b

2 c

可以同时遍历两个或更多序列 zip

>>>questions = [’name’,’quest’,’favorite color’]

>>>answer = [‘lancelot’,’the holy grail’,’blue’]

>>>for q,a in zip(questions,answer):

>>> print(q,a)

反向遍历 reversed(range(1,10,2))

9 7 5 3 1

sorted() 函数返回一个已排序列

模块

模块被另一个程序第一次引入,其主程序将运行,如果我们想在模块被引入,某一模块不立即执行,可以用”name"属性

#FileName:using_name.py

>>>if__name__ == ‘__main__’:

>>> print(‘程序自身在运行’)

>>>else:

>>> print('我来自另一模块’)

>>> python using_name.py

程序自身运行

>>>import using_name

我来自另一模块

异常和错误

try

xxx

catch

xxx(异常的时候执行)

else

xxx(正常的时候执行)

finally

xxx(都会执行)

raise 抛出异常

raise Exception(’x 不能大于5.x的值为:{}’.format(10))

构造函数

类有一个特殊方法(构造方法)init 类的实例化会自动调用init

init函数可以带参数 eg init(self, realpart, imagpart) 传递就通过构造函数传入

类里面可以定义方法,与普通方法不同的是,第一个参数必须是self(当然也可以其他变量名)表示类本身实例

类的继承Student(People)

类的多继承Sample(Student,People) 如果调用两个父类都存在的方法,从左到右找到第一个调用

方法覆盖 super()调用父类方法

两个下划线开头的属性表明该属性我私有,不能被外部访问 __private_attrs

类的私有方法以两个下划线开头 __private_method

类的专有方法 init, del , add …….

c = Child()

c.myMethod()

super(Child,c).myMthod() #调用父类方法

命名空间

当内部作用域想要修改外部作用域,使用 global关键字

如果要修改嵌套作用域的变量 ,使用nonlocal关键字

num = 1

def fun1():

global num

print(num)

num = 123

print(num)

print(num)

1

123

123

def outer():

num = 10

def inner():

nonlocal num

num = 100

print(num)

print(num)

100

100

14.多线程&线程池优化

并行:多个cpu

并发:在一个cpu基础上充分利用资源

GIL(global interpreter lock)全局解释器锁 cpypthon

方法 daemon 守护,主线程结束,子线程也跟着结束; join 阻塞 线程执行完才会执行下一步

线程锁 from threading import Lock acquire() release() 获得和释放锁

Quenu 队列

队列是线程安全 取数据和存数据(put) 是阻塞操作 (put_nowait 非阻塞 异常马上抛出) 可以有参数timeout 设置超时时间

ThreadPoolExecutor 线程池

submit() 执行线程 done()判断线程是否结束 cancel() 取消还未运行的线程

wait() 等待线程完成,传递参数(线程)

as_compeletecalltask(参数) 每个进程完成会返回

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值