python知识点总结

  1. 简介
    1. 特点
      1. 可移植性:可以移植到许多平台
      2. 可扩展行:可以使用C/C++完成部分程序
      3. 可嵌入:可以将Python嵌入到C/C++程序。让你的程序的用户获得“脚本化”的能力
  2. 基础语法
    • 注释:单行用# 多行用”””或’’‘
    • 行与缩减:不通过{},通过代码缩减 缩进的空格数没有固定,但是同一块级代码缩进要一样
    • 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
  1. 基本属于类型
    • 可以多个变量赋值 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)]) #构造函数创建
  • 数据类型转换(类型名的方法)
  1. 运算符
    1. 比较运算法 ==, !=, >, <, >=, <=
    2. 赋值运算 =, +=, -=, =, /=, %=,*=(幂) //=(取整)
    3. 位运算 &, |, ^, ~,<<, >>
    4. 逻辑运算 and or not
    5. 成员运算符 in ,not in
    6. 身份运算符 is(两个标识符是否引用一个对象) ,not is (ps:is 和== 差别: == 用来判断值是否相等)
  2. Number
    1. //得到的并一定是是整数 和分母分子有关 如果两个有一个浮点,返回就是浮点
    2. 数学函数 abs() ceil()向上取整 floor向下取整…...
  3. List
    1. 包含函数:len(list) max(list) list(seq) 将元组换为列表
    2. 方法:list.append(obj) 在列表末尾添加新对象 …...
  4. 迭代器与生成器
    1. 元组,list,字符串都可创建迭代器 iter()
>>>lista = [1,2,3,4]
>>>it = iter(lista)
>>>print(next(it)) #输出迭代器的下一个元素
1
>>>print(next(it))
2
创建一个迭代器(把一个类作为迭代器)
实现 __iter__() 和__next__() 方法
生成器:使用了yield的函数成为生成器,生成器是一个返回迭代器的函数
每次运行到yield函数都会暂停并保存当前所有运行信息
  1. 函数
    1. python函数参数传递
      1. 不可变类型(整数,字符串,元组)fun(a),传递知识a的值,改变a不会影响到传递进来参数a,实际上是复制了
      2. 可变类型(list 字典)
    2. 参数
      1. 关键字参数
      2. 默认参数
      3. 不定长参数
>>>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
单独出现星号*后必须用关键字传入
  1. 数据结构
    1. 可以把列表当做栈 当作队列
    2. 列表推导式
从序列创建列表的简单途径
>>>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() 函数返回一个已排序列
  1. 模块
    1. 模块被另一个程序第一次引入,其主程序将运行,如果我们想在模块被引入,某一模块不立即执行,可以用”name"属性
#FileName:using_name.py
>>>if__name__ == ‘__main__’:
>>>    print(‘程序自身在运行’)
>>>else:   
>>>    print('我来自另一模块’)
>>> python using_name.py
程序自身运行
>>>import using_name
我来自另一模块
  1. 异常和错误
try
    xxx
catch
    xxx(异常的时候执行) 
else
    xxx(正常的时候执行)
finally
    xxx(都会执行)
raise 抛出异常
raise Exception(’x 不能大于5.x的值为:{}’.format(10))
  1. 构造函数
    1. 类有一个特殊方法(构造方法)init 类的实例化会自动调用init
    2. init函数可以带参数 eg init(self, realpart, imagpart) 传递就通过构造函数传入
    3. 类里面可以定义方法,与普通方法不同的是,第一个参数必须是self(当然也可以其他变量名)表示类本身实例
    4. 类的继承Student(People)
    5. 类的多继承Sample(Student,People) 如果调用两个父类都存在的方法,从左到右找到第一个调用
    6. 方法覆盖 super()调用父类方法
    7. 两个下划线开头的属性表明该属性我私有,不能被外部访问 __private_attrs
    8. 类的私有方法以两个下划线开头 __private_method
    9. 类的专有方法 init, del , add …….
c = Child()
c.myMethod()
super(Child,c).myMthod() #调用父类方法
  1. 命名空间
    1. 当内部作用域想要修改外部作用域,使用 global关键字
    2. 如果要修改嵌套作用域的变量 ,使用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(参数) 每个进程完成会返回
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容