美文网首页python热爱者Python新世界
你可以选择加深记忆、学习,一篇python入门总结!

你可以选择加深记忆、学习,一篇python入门总结!

作者: 48e0a32026ae | 来源:发表于2018-11-10 16:32 被阅读0次

    自然语言用双引号,机器语言用单引号 例如 dict 的 key

    单行注释 #

    多行注释 ''' '''

    输入 print

    %s 字符串的占位符

    学习Python中有不明白推荐加入交流群

                    号:516107834

                    群里有志同道合的小伙伴,互帮互助,

                    群里有不错的学习教程!

    %d 数字的占位符

    如语句中有占位符那么所有的 % 都是占位符,可以用 %% 转义

    n**m n的m次幂

    逻辑运算符

    and 并且

    or 或者

    not 非的意思

    运算顺序

    and or not 同时存在 先算括号然后算 not 然后算 and 最后算 or

    x or y 如果x==0,那么就是y,否则就是x,记住and跟or相反,如果x==0,那么就是x,否则就是y

    bit_length() 二进制的长度

    bool() 强制转化为boolean类型

    空的东西都是Flase,非空的东西都是true

    切片可以对字符串进行截取

    s[起始位置:结束位置]

    s[其实位置:结束位置:步长]

    字符串是不可变的对象,所以任何操作对原字符串本身是不会发生改变的

    字符串操作

    capitalize 首字母大写

    lower 全部转换成小写

    upper 全部装换成大写

    swapcase 大小写互相交互位置

    title() 单词的首字母大写

    strip 去掉空格

    lstrip 去掉左边空格

    rstrip 去掉右边空格

    split 切割

    format 指定位置的索引 {}

    startswith 判断字符串是不是某某开头

    endswith 判断字符串是不是某某结尾

    count(a) 查找"a"出现的次数

    find("aa") 查找"aa"出现的位置,如果没有返回-1

    isalnum 判断是否有字母和数字组成

    isalpha 判断是否由字母组成

    isdigit 判断是否有数字组成

    isnumeric 判断数字(中文)

    len() 内置函数.直接使用.不用点操作.判断字符串的长度

    for 变量 in 可迭代对象 循环遍历

    元组不可变,只读 ("a",) tuple 元组中的元素之时不允许删除但是我们可以删除整个元祖

    元祖的不可变的意思是子元素是不可变,而子元素内部的子元素是可以变,这取决于子元素是否是可变对象

    range(开始,结束,步长) 数字

    insert 索引添加

    lst.insert(1,"刘德华")

    extend 迭代添加(用新列表扩展原来的列表)

    lst.extend(["马化腾","小泽"])

    字典 dict

    字典的key必须是可哈希的,不可变,value没有限制

    不是按照我们保存的顺序保存的,无序的

    setdefault() 如果字典中已经包含了这个key,不在继续保存

    如果key重复了,会替换原来的value

    dict.update(dict2)

    把字典参数dict2的key/value对更新到字典dict里,如果键值有重复,更新替换

    删除

    pop()

    popitem()

    clear()

    查询

    div[key]

    keys 返回所有的key,虽然不是列表,但是可以迭代循环

    values 返回所有的value

    items 拿到所有的键值对

    enumerate 枚举

    is

    比较内存地址是否相等

    小数据池:字符串 数字

    字符串

    不能有特殊字符

    s * 20还是同一个地址,s * 21以后就是两个地址

    数字的范围: -5-- 256

    编码

    各个编码之间的二进制,是不能相互识别的,会产生乱码

    文件的存储,传输,不能是unicode(只能是utf-8 utf-16 gbk )

    str 在内存中是用unicode编码

    bytes 类型

    s=b'alex'

    encode 编码,如何将str-> bytes

    decode 解码

    fromkeys

    dic.fromkeys(keys,value) 返回的是一个字典 ,将keys的所有元素分别打印,对应的是value

    join() 把列表变成字符串

    列表不能再循环的时候删除,因为索引会跟着改变

    # # 冒泡排序

    # # lst=[86,3,5,7,23,53,13]

    # # for i in range(len(lst)): # 记录内部排序的次数

    # # i=0

    # # while i

    # # if lst[i]>lst[i+1]:

    # # lst[i],lst[i+1]=lst[i+1],lst[i]

    # # i=i+1

    文件操作

    r,rb 只读(字节b)

    w,wb 只写

    a,ab 追加

    r+ 读写

    在r+模式下,如果读写了内容,不论读取内容多少,光标显示的是多少,在写入或者操作文件的时候都是在结尾进行的操作

    read

    w+ 写读

    a+ 写读(追加写读)

    seek(n) 光标移动的位置

    seek(0)

    seek(0,)

    write 在没有任何操作之前进行写,在开头写,如果读取过后就在末尾写

    tell()

    移动到当前位置

    文件修改

    创建新文件,把修改后的内容写入新文件,删除老文件,重命名新文件

    rename 改名字

    import os

    flush() 刷新缓冲区

    def 函数名

    三元运算符

    a if a>b else b

    *food 可以传入任意的位置参数,动态参数必须在位置参数后面,收到的内容是元组tuple

    ** 来接收动态关键字参数

    关键字参数必须在位置参数后面,否则参数会混乱

    顺序:

    位置参数>*args>默认值参数>**kwargs

    globals 全局作用域

    不再使用局部作用域中的内容而改成全局作用域中的变量

    nonlocal 表示在局部作用中,调用父级使用空间中的变量(父级使用内部变量)

    locals() 局部作用域

    sum() 求和

    def extendList(val,list=[]):

    list.append(val)

    return list

    list1=extendList(10)

    print("list1=%s"% list1)

    # list=[10]

    list2=extendList(123,[])

    print("list=%s" % list2)

    # list=[123]

    list3=extendList("a")

    print("list3=%s"% list3)

    # list=[10,"a"]

    key没有改变所有指向同一个对象

    闭包

    闭包就是内层函数,对外层函数(非全部)的变量的引用

    _closure_ 检测函数是否是闭包,使用函数名 ._closure_ 返回cell就是闭包,返回None就不是闭包

    __iter__() 获取迭代器

    __next__() 迭代对象

    yield 返回结果 可以让函数分段执行

    send(值) 让生成器向下执行一次,给上一个 yield 传一个值(第一个和最后一个是不用传的)

    列表推导式

    [最终的结果(变量) for 变量 in 可迭代对象 if 筛选的条件]

    lst=[ i for i in range(1,15)]

    生成器表达式

    g=(i for i in range(10))

    print(list(g))

    不同点,一个是[] 一个是(),一个是一次性给你好内存,一个是一个一个给你

    得到的值不一样,列表推导式得到的值一个生成器

    生成器要值的时候才去取

    字典推导式

    dic={lst[i]:lst2[i] for i in range(len(lst))}

    集合推导式

    lst=["那化腾","马化腾","王建中","张建忠","张雪峰","张雪峰","张雪峰"]

    s={i for i in lst}

    print(s)

    去重

    没有元组推到式,不过可以认为是生成器表达式

    字典是key:value 集合是key

    内置函数

    iter() 迭代

    next() 输出下一个

    print("aa","bb","cc") sep:分隔符 end最后

    hash算法 目的是唯一,列表是不可哈希的,元组可以

    callable() 是否是可以调用的

    字符串的执行

    eval

    exec

    divmod 求商和余数

    round 五舍六入

    pow(a,b) a的b次幂

    sum() 求和

    max() 最大值

    min() 最小值

    reversed 倒序 list()

    slice()

    s=slice(1,3,1)

    print(lst[s])

    repr 原样输出,过滤掉转义字符 不管百分号

    ord 返回编码表中的码位

    chr 已知码位计算字符

    format

    enumerate() 把索引和元素一起获取,索引默认从0开始

    lst=["A","B","c","d"]

    for index,el in enumerate(lst,100):

    print(index)

    print(el)

    all() 全部是True返回True(可迭代对象)

    any() 有一个是True则是True(可迭代对象)

    lembda() 匿名函数

    a=lambda x:x*x 语法:lambda 参数:返回值

    __name__ 查看函数名

    sorted 要给一个对象接受, reverseed 参数为True False 升序降序

    lst=[

    {"id":1,"name":"alex","age":18},

    {"id":2,"name":"taibai","age":19},

    {"id":3,"name":"wusir","age":13},

    {"id":4,"name":"ritian","age":11},

    {"id":5,"name":"nvshen","age":12},

    ]

    def func(dic):

    return dic["age"]

    l1=sorted(lst,key=func)

    print(l1)

    filter 第一个参数是函数,第二个参数是可迭代的对象

    lst=[1,3,4,5,6,7,8]

    li=filter(lambda i:i%2==1,lst)

    print(list(li))

    list(filter(lambda dic:dic["age"]>40,lst))

    map

    lst=[1,2,3,4,5,6,7]

    def func(i):

    return i*i

    li=map(func,lst)

    print(list(li))

    lst1=[1,3,5,6,7,8]

    lst2=[2,43,4,5,6,8]

    print(list(map(lambda x,y:x+y, lst1,lst2)))

    #如果传入的多个参数,后面的列表要一一对应

    递归

    面向对象

    Person.__dict__ 查询类中的所有内容(不能进行增删改操作)

    函数.属性 对类中的单个的变量进行增删改查

    类名+()产生一个实例(对象,对象空间)

    自动执行类中的 __init__ ,将对象空间传给 __init__ 的self 参数

    给对象封装相应的属性

    Person.money="货币" # 增

    Person.animal="中等动物" # 改

    del Person.mind #删除

    print(Person.__dict__)

    class Count:

    count = 0

    def __init__(self):

    Count.count = self.count + 1

    查看类被调用几次

    通过类名可以更改我的类中的静态变量值

    Count.count=6

    Count.__dict__

    但是通过对象,不能改变只能引用类中的静态变量

    类的两个属性

    静态属性就是直接在类中定义的变量

    动态属性就是定义在类中的方法

    组合(不太懂)

    from math import pi

    # 求圆和圆环的面积和周长

    class Circle:

    def __init__(self,r):

    self.r=r

    def aera(self):

    return self.r**2*pi

    def perimeter(self):

    return self.r*2*pi

    class Ring:

    def __init__(self,r1,r2):

    self.r1=Circle(r1)

    self.r2=Circle(r2)

    def area(self):

    return self.r1.aera()-self.r2.aera()

    def perimeter(self):

    return self.r1.perimeter()+self.r2.perimeter()

    继承

    只执行父类的方法:子类中不要定义与父类同名的方法

    自执行子类的方法:在子类创建这个方法

    既要执行子类的方法,又要执行父类的方法:

    super().__init__(name,sex,age)

    继承:单继承,多继承

    类:经典类,新式类

    新式类:凡是继承object都是新式类

    python3x 所有的类都是新式类,因为python3x中的类默认继承object

    经典类:不继承object都是经典类

    python2x 所有的类默认都不继承object,所有类默认都是经典类,你可以让其继承新式类

    单继承:新式类,经典类的查询顺序一样

    多继承:

    新式类:遵循广度优先 类名.mro()

    经典类:遵循深度优先

    多继承的新式类 广度优先:一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走别一条路,如果不能,则走到终点

    多继承的经典类:一条路走到黑

    深度优先,广度优先:只能是继承两个类的情况

    继承的优点:

    节约代码

    规范代码

    统一化接口设计

    # class Alipay:

    # def __init__(self, money):

    # self.money = money

    #

    # def pay(self):

    # print("使用京东支付了%s" % self.money)

    #

    #

    # class Jdpay:

    # def __init__(self, money):

    # self.money = money

    #

    # def pay(self):

    # print("使用京东支付了%s" % self.money)

    def pay(obj):

    obj.pay()

    a1 = Alipay(200)

    j1 = Jdpay(100)

    pay(a1)

    抽象类接口类

    from abc import ABCMEta, abstractmethod

    class Payment(metaclass=ABCMEta):# 抽象类(接口类)

    @abstractmethod# 强制指定一个规范,凡事继承我的类中必须有pay方法,如果,如果没有就会报错

    def pay(self):

    pass

    封装

    广义的封装: 把方法和属性都封装在一个类里,定义一个规范来描述一类事物

    狭义的封装: 私有化,只有在类的内部访问

    __age 对于私有静态字段来说,只能在本类中,类的外部

    python处处都是多态

    一种类型的多种形态,多个子类去继承父类,那么每一个子类都是这个父类的一种形态

    property 装饰器函数,内置函数,帮助你将类中的方法伪装成属性,特性

    @方法名.setter

    @方法名.deleter

    静态方法

    class A:

    @staticmethod

    def func():

    print(666)

    A.func()

    类方法

    # class A:

    # name="alex"

    # count=1

    # @classmethod

    # def func(cls): # 此方法无需对象参与

    # print(cls)

    # print(cls.age)

    # def func2(self):

    # print(self)

    # class B(A):

    # age=22

    # def f1(self):

    # pass

    # # B.func()

    # b1=B()

    # b1.func2()

    属性:将方法伪装成一个属性,代码上没有什么提升,只是更合理

    @property

    @属性名.setter

    @属性.deleter

    类方法

    @classmethod

    只能有类名调用(对象调用,传给cls参数也是该对象的所属类)

    使用场景

    1.无序对象参与

    2.对类中的静态变量进行修改

    3.在父类中类方法得到子类的类空间

    静态方法

    @staticmethod

    代码性,清晰

    复用性

    isinstance() 判断对象所属类型,包括继承关系

    issubclass() 判断类与类之间的继承关系(前面父类,后面子类)

    class A:pass

    class B(A):pass

    print(issubclass(B,A))# True

    print(issubclass(A,B))#False

    反射

    反射: 用字符串数据类型的变量名来访问这个变量的值

    class Student:

    ROLE = 'STUDENT'

    # eval 这个东西 明确的写在你的代码里

    print(Student.ROLE)

    # 'ROLE'

    # eval()

    print(getattr(Student,"ROLE"))

    反射的方法: getatter hasattr setattr delattr

    class Student:

    ROLE = 'STUDENT'

    @classmethod

    def check_course(cls):

    print('查看课程了')

    @staticmethod

    def login():

    print("登录")

    # 反射查看属性

    print(Student.ROLE)

    print(getattr(Student, "ROLE"))

    print(Student.__dict__)

    # 反射调用方法

    # getattr(Student,'check_course')() #类方法

    # getattr(Student,'login')() # 静态方法

    num = input(">>>")

    if hasattr(Student, num):

    getattr(Student, num)()

    setattr(a,'name','alex_SB') 对象,属性,替换的属性

    单例(指向同一块内存空间)

    如果一个类,从头到尾只有一个实例,说明从头到尾只开辟一块属于对象的空间,那么这个类就是一个单例类

    __call__ 相当于对象()

    Lisp语言???

    a.func 就是在a对象中存储了类对象的指针(想当于记录了 func 地址的变量)

    抽象类和接口类

    classmethod 类方法的装饰器, 内置函数

    staticmethod 静态方法的装饰器 内置函数

    如果一个类里面的方法,既不需要用到self中的资源,也不用cls中的资源,想当于一个普通的函数

    但是你由于某种原因,还要拿这个方法放在类中,这个时候,就将这个方法变成一个静态方法

    某种原因:

    你完全想用面向对象编程,所有的函数都必须写在类中

    某个功能确确实实施这个类的方法,但是确确实实没有用过和这个类有关系的资源

    列表中不要用 pop(参数) insert() 特别消耗性能,但是可以用 pop() append()

    import sys

    mymodule=sys.modules["__mian__"]

    getattr(mymodule,"变量名")

    __名字__ 不是被直接调用

    间接调用: 内置函数/面向对象中特殊语法/python提供的语法糖

    __str__ :str(obj) 要求必须实现 __str__ 要求这个方法的返回值必须是字符串str类型

    __call__ : 对象() 用类写装饰器

    __len__ : 要求obj必须实现了 __len__ ,要求这个方法的返回值必须是数字int类型

    __new__ : 在实例化的过程中,最先执行的方法,在执行init之前,用来创造一个对象,构造方法

    __init__ : 在实例化的过程中,在new执行之后,自动触发的一个初始化

    __repr__ 是 __str__ 的备胎,如果有 __str__ 没有的话要向上找,只要父类不是object,就执行父类的 __str__ ,但是如果出了object之外的父类都没有 __str__ 方法,就执行子类的 __repr__方法,如果子类也没有,还要向上继续找父类中的 __repr__ 方法,一直到找不到,再执行object类中的 __str__ 方法

    hash

    hash方法

    底层数据结构基于hash值寻址的优化操作

    hash是一个算法,能够把某一个要存在内存里的值通过一系列计算,保证不同值的hash结果是不一样的

    对同一个值在多次执行python代码的时候hash值不一样

    但是对同一个值,在同一次执行python代码的时候hash值永远不变

    相关文章

      网友评论

        本文标题:你可以选择加深记忆、学习,一篇python入门总结!

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