美文网首页
python知识点总结

python知识点总结

作者: 梦幻小孩斋 | 来源:发表于2021-12-06 16:23 被阅读0次
    简介
        特点
            可移植性:可以移植到许多平台
            可扩展行:可以使用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 字典)
        参数
            关键字参数
            默认参数
            不定长参数
    

    这里还是要推荐下小编的Python学习喂薪*(同音):‘’七六二,四五九,五一零‘’不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2021最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。

    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
    , <, >=, <=
    赋值运算 =, +=, -=, =, /=, %=,
    =(幂) //=(取整)
    位运算 &, |, ^, ~,<<, >>
    逻辑运算 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 字典)
    参数
    关键字参数
    默认参数
    不定长参数
    这里还是要推荐下小编的Python学习喂薪(同音):‘’七六二,四五九,五一零‘’不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2021最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。

    >>>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)
    =, <=
    赋值运算 =, +=, -=, =, /=, %=,=(幂) //=(取整)
    位运算 &, |, ^, ~,<<, >>
    逻辑运算 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 字典)
    参数
    关键字参数
    默认参数
    不定长参数
    这里还是要推荐下小编的Python学习喂薪
    (同音):‘’七六二,四五九,五一零‘’不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2021最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。

    >>>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(参数) 每个进程完成会返回
    

    相关文章

      网友评论

          本文标题:python知识点总结

          本文链接:https://www.haomeiwen.com/subject/buhbxrtx.html