python基础知识

# 一. 变量
    1.基本使用:变量名 = 变量值;先定义,再赋值,最后引用
    2.内存管理:
        垃圾回收机制:变量值被绑定的变量名个数为零
        引用计数增加:多个变量名绑定一个变量值
        引用计数减少:del 变量名,删除变量名与变量值的绑定关系
    3.变量的组成部分
        变量名:指向赋值符号右侧值的内存地址,以访问赋值符号右侧的值
        赋值号:将变量值的内存地址绑定给变量名
        变量值:value
    4.变量值的三个特征:
        id:反应变量值的内存地址
        type:记录事务的状态,不同类型的值用来表示记录不同的事务的状态
        value
    5.运算符:
        算术运算符:+-*///(整除)%(取余)**(幂运算) 
        逻辑运算符:
            and:x and y 布尔"与"  如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
            or:x or y	布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。
            notnot x	布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
        比较运算符:
            ==:比较对象是否相等
            !=:比较两个对象是否不相等
            > <:比较两个对象的大小
            >= <=
        赋值运算符
            =+=-=*=/=%=**=//=
        成员运算符:
            in:如果在指定的序列中找到值返回 True,否则返回 Falsenot in:如果在指定的序列中没有找到值返回 True,否则返回 False。
        身份运算符:
            isis 是判断两个标识符是不是引用自一个对象
            is notis not 是判断两个标识符是不是引用自不同对象
        运算符优先级:
            **	指数 (最高优先级)
            ~       +         -	按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
            *    /    %    //	乘,除,取模和取整除
            +  -	加法减法
            >>    <<	右移,左移运算符
            &'AND'
            ^   |	位运算符
            <=    <    >    >=	比较运算符
            ==    !=	等于运算符
            =   %=   /=    //=    -=    +=    *=    **=	赋值运算符
            is is not	身份运算符
            in not in	成员运算符
            not and or	逻辑运算符
    6.常量:不变的量(python中没有常量的概念)
        约定:小写字母全为大写代表常量
# 二.基本数据类型:
    1. int(整型)
    2. float(浮点型)
    3. str(字符串类型)
    4. list(列表)
        形式:在[]内按逗号分隔开任意类型的值。
        定义:
           (1[1,2,3,4,5,6]2list(1,2,3,4,5,6)
        类型转换:但凡能被for循环遍历的类型都可以被list()转换
        内置方法:lis = [1,2,3,4,5,6]1)按索引取值:lis[0],lis[1],lis[3]2)切片:lis[0:3]==>[1,2,3],顾左不顾右
             (3)长度:len(lis)4)成员运算:3 in lis ==>True5)追加:lis.append(8), 在末尾追加
             (6)插入:insert(index, obj)7)将一个列表或字符串中的元素添加到列表中,extend()8)删除:
                  del(),无返回值,单纯的删除,不支持赋值
                  pop(index),依据索引删除,默认删除最后一个
                  remove(obj),依据元素删除,无返回值
             (9)计数:count()10)查看索引:index()11)清空所有元素:lis.clear()12)反转列表:lis.reverse()13)排序:sort(reverse=True降序),默认升序,False14)比较大小:对应位置元素依次比较,只适用于同种数据类型
    5. set(集合)
        定义:{}内用逗号分隔开多个元素,元素满足:
            (1)集合内元素是不可变类型
            (2)集合内元素无序
            (3)元素不重复
       类型转换:set()
       内置方法:
          (1)并集 |2)交集 &3)差集 -4)对称差集 ^5)父子集 包含关系
       去重:只针对不可变类型
       删除:(1set.discard()删除集合元素,不存在不报错
            (2set.updata() 更新元素
    6. tuple(元组)
        作用:按索引存放多个值,只用于读,不用于改
        定义:在()内按逗号分隔开任意类型的值,(1,2,3,4,5,6);当元组内只有一个值时,之后面必须要跟逗号,否则不是元组类型
            直接用tuple():tuple((1,)) 
            类型转换:tuple(obj)
        内置方法:
            切片:tup[1:4]
            索引取值:tup[1]
            长度:len(tup)
            成员运算:x in tuple
            循环
            统计个数:count
            查找索引:index()
    7. dict(字典)字典类型:
        按key取值:可存可取,若key不存在,则创建
        长度:len(dict)
        删除:
           del, pop(), popitem
# 三.垃圾回收机制补充(引用计数)
        x = 0,直接引用,变量名直接关联变量值的内存地址
        l=['a', x]:间接引用:在某一个容器里引用变量
        扫描内存中变量的引用计数,若引用计数为零,则回收该变量
        循环引用会带来的内存泄露
        标记清楚:
            标记:遍历所有的GC Roots对象(栈区中的所有内容)
            清除:遍历堆区中的所有对象,将没有标记的对象全部清除
        分代回收:
            分代:在经历多次扫描之后都没有被回收的变量,gc机制就会认为该变量是常用变量,被扫描的频率就会降低
            回收:以引用计数作为回收的机制
# 四. 文件操作
    1. 三种操作模式
        1.1 t模式
            读写都以字符串为单位
            只针对文本文件
            必须指定字符编码
        1.2 b模式:
            直接从硬盘读入内存,不做任何解码操作
            读写都是以bytes为单位
            可针对所有类型文件
            一定不能指定字符编码
        1.4 x模式
             x, 只写模式【不可读;不存在则创建,存在则报错】
    2. wt模式操作
        2.1 如果文件不存在,则会创建新文件
        with open("a.txt",mode='wt',encoding='utf-8') as file:
            file.write("123456")
        2.2 如果文件存在,则会先清空文件内容,在写入新的内容
        with open("a.txt",mode='wt',encoding='utf-8') as file:
            file.write("8946415")
        2.3 如果以w模式打开文件进行写入操作时,如果文件没有关闭,新的内容将会写在旧的内容之后
        with open("a.txt",mode='wt',encoding='utf-8') as file:
            file.write("8946415\n")
            file.write("8946415\n")
            file.write("8946415\n")
            file.write("8946415\n")
        2.4 拷贝文件(t模式下只能拷贝文本文件)
        src_file = input("输入源文件路径:").strip()
        mubiao_file = input("输入目标文件路径:").strip()
        with open(r"{}".format(src_file), mode='rt', encoding='utf-8') as src1_file, \
            open(r"{}".format(mubiao_file), mode='wt', encoding='utf-8') as mubiao1_file:
            res = src1_file.read()
            mubiao1_file.write()
    3. rt模式操作文件
        如果文件不存在,则会报错
        user_name = input("请输入用户名:")
        pass_word = input("请输入密码:")
        with open("user_information.txt", mode='rt', encoding='utf-8') as file:
            for info in file:
                username, password = info.strip().split(":")
            if user_name == username and pass_word == password:
            print("login successful")
            break
            else:
                print("login failed")
    4. at模式操作文件
        4.1 a 模式 :追加写 当文件不存在时,会创建空文件
        with open("b.txt", mode='at', encoding='utf-8') as file:
            ...
        4.2 当文件存在时,文件指针会直接跳到文件末尾
        with open("b.txt",mode='wt',encoding='utf-8') as file:
            file.write("8946415\n")
        with open("b.txt", mode='at', encoding='utf-8') as file:
            file.write('hah')
        4.3 file.read() # 报错  not readable,不能读
        4.4 当文件不关闭时,与w模式没有区别
        with open("b.txt", mode='at', encoding='utf-8') as file:
            file.write('hah\n')
            file.write('hah\n')
            file.write('hah\n')
    5. at+模式操作文件
        with open("a+.txt", mode='at+', encoding='utf-8') as f:
            f.write("中国sdjandsakcskadsa")
             # 指针会停留在文件末尾,什么也读不出来
            f.read()
    6. wt+模式操作文件
        6.1 wt+ 会清空之前内容,然后写入内容,指针停在文件末尾
        with open("w+.txt", mode='wt+', encoding='utf-8') as f:
            f.write("中国")
        with open("w+.txt", mode='wt+', encoding='utf-8') as f:
            f.write("中国好风光!")
        6.2 当进行读操作时,因为指针在文件末尾,什么也读不出来,并且会清空文件内容,指针跳转到文件开头
        with open("w+.txt",mode='wt+',encoding='utf-8') as f:
            f.read()
    7. rt+模式操作文件
        7.1 rt+ 相比于rt模式来说,能够调用write方法进行写操作
        with open("r+.txt",mode='wt+',encoding='utf-8') as f:
            f.write("中国")
        7.2 当文件存在时,指针在文件开头,会覆盖之前的内容,之前的内容会全部清空
        with open("r+.txt", mode='wt+', encoding='utf-8') as f:
            f.write("1")
    8. 其他操作
        8.1 readline() ,一次读取一行内容,光标移动到第二行首位
        with open("r+.txt", mode='rt', encoding='utf-8') as f:
            result = f.readline()
            print(result)
        8.2 readlines() ,每读取一行内容,存放在列表中,有多少行,列表就有多少个元素
        with open("a.txt", mode='rt', encoding='utf-8') as f:
            result = f.readlines()
            print(result)
        8.3 writelines() 将列表中的多个元素循环写入文件 覆盖之前的内容
        l = ['8946415\n', '8946415\n', '8946415\n', '8946415\n']
        with open("a.txt",mode='wt',encoding='utf-8') as f:
            f.writelines(l)
        8.4 纯英文字符,若以b模式写入时,可以不用encode()编码,直接在字符串前加个b,即可写入
        8.5 flush():将文件内容立刻从内存刷到硬盘上去
    9. 指针移动
        9.1, 指针移动单位都是以字节bytes为单位的
        9.2,特殊情况:
            t模式下的read(n),n代表的是字符个数
        with open("user_sing.txt",mode='rt',encoding='utf-8') as f:
            result = f.read(4)
            print(result)
        9.3,控制指针移动seek(n,模式):
            n指的是移动的字节个数
            模式:
                0:参照物是文件开头位置,只有0模式才可以在t模式下使用
                1:参照物是当前指针位置
                2:参照物是文件末尾位置
        9.4,查看文件指针当前的位置:tell()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值