p2总复习(代码片段)

masterjian924 masterjian924     2022-12-15     322

关键词:

0531总复习

数据类型内置方法

整形类型内置方法

+ - * / // % **

浮点型类型内置方法

+ - * / // % **

字符串类型内置方法

优先掌握

  1. 索引取值
  2. 切片
  3. 切割split
  4. 长度
  5. 成员运算
  6. 去除空白strip
  7. for循环取值

需要掌握

  1. lstrip/rstrip
  2. rsplit
  3. upper/lower
  4. startswith
  5. endswith
  6. isdigit
  7. join
  8. replace

了解

  1. find/rfind/index/rindex/count
  2. center/ljust/rjust/zfill
  3. swapcase/capitalize/title
  4. extendtaps
  5. is系列

列表类型内置方法

优先掌握

  1. 索引取值,索引更改值
  2. 切片
  3. 长度
  4. 成员运算
  5. append
  6. del
  7. for循环

需要掌握

  1. insert
  2. index
  3. sort
  4. remove
  5. extend
  6. count
  7. pop
  8. clear
  9. copy
  10. reverse

元组类型内置方法

优先掌握

  1. 索引取值
  2. 切片
  3. 长度
  4. 成员运算
  5. count
  6. index
  7. for循环

字典类型内置方法

优先掌握

  1. 按键取值
  2. 长度
  3. 成员运算
  4. keys/vlaues/items
  5. for循环
  6. del
  7. pop(随机删除,因为字典是无序的)

需要掌握

  1. fromkeys
  2. get
  3. update
  4. setdefault

集合类型内置方法

优先掌握

  1. 去重
  2. 长度
  3. 成员运算
  4. |
  5. &
  6. ^
  7. > >=
  8. < <=
  9. = =

需要掌握

  1. add
  2. remove
  3. difference_update
  4. discard(不报错)
  5. isdisjoint

数据类型总结

可变or不可变

可变 不可变
列表,字典,集合 字符串,整形,浮点型

有序or无需

有序 无序
字符串,列表,元组 字典,集合

存一个值or多个值

存一个值 存多个值
整型,浮点型,字符串 列表,集合,字典,元组

拷贝

l1= [1,1]
l2 = l1
  • 当l2为l1的拷贝对象时,l1发生变化,l2也会随之发生变化

浅拷贝

l1 = [1,2,[1,2]]
import copy

l2 = copy.copy(l1)
  • 当l2为l1的浅拷贝时,l1内部的不可变元素发生变化,l2不变;l1内部的可变元素发生变化,l2也会随着发生变化

深拷贝

l1 = [1,2,3,[2,3]]
import copy

l2 = copy.deepcopy(l1)
  • 当l2为l1的深拷贝对象时,l1内部的元素发生变换,l2都不会发生变化

  • ==拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的==

字符编码

  • 用什么编码写的文件,就用什么编码打开,unicode--》gbk 编码encode;gbk ---》 unicode 解码 decode

Python3解释器编码

当python3解释器启动,并生成变量时,会以unicode的形式把变量读入内存,当我们使用print方法时,print会自动按照终端的字符编码 编码unicode形式的变量

生成变量时以unicode丢入内存,终端时gbk,还是utf8,这终端都可以识别。
生成变量时以utf8丢入内存,终端为utf8,可以,但是终端为gbk,不可以了。==错误==

文件操作

打开文件的流程

  1. 打开文件 open
  2. 读写文件 read/write
  3. 关闭文件 close

with管理上下文

with open(文件名,打开模式,编码格式) as f:
    f.操作命令

打卡文件的三种模式

  1. r只读 (默认)
  2. w清空只写
  3. a追加写入
  • t 文本模式(默认)
  • b 二进制模式

同时打开两个文件

with open(文件一),open(文件二),open(文件三)……

文件复制


with open('a.txt','r',encoding='utf8') as fr,                           open('a_swap.txt','w',encoding='utf8') as fw:
    data = fr.read()
    # 做一些处理之后
    fw.write(data)
    fw.flush()
    
import os

os.remove('a.txt')
os.rename('a_swap.txt','a.txt')

打开文件file后,file的方法

  1. f.read() # read(n)意味着读几个字符
  2. f.write()
  3. f.readline()
  4. f.readlines() (如果取出来时for循环的话,可以for i in f)
  5. f.flush()
  6. f.seek()
  7. f.tell()
  8. f.truncate()

函数

定义函数

def 函数名():
    代码块
  • 定义阶段只检测语法,不执行代码

函数的三种形式

  1. 无参函数
  2. 有参函数
  3. 空函数

调用函数

def f1():
    return 2
    
f1()
f = f1()
  • 调用阶段才执行代码

函数的返回值

  • 默认为None,如果遇到return则会终止函数,可以返回多个值(接收的时候为元组形式),并且值为任意数据类型

函数的参数

形参:接受实参,具有某种描述意义,但没有具体的值

  1. 位置形参:最普通的参数,从左到右接收一一对应的实参
  2. 默认形参:具有默认值,必须的写在位置形参的后面

实参:具有具体的值

  1. 位置实参:从左到右传值给一一对应的形参
  2. 关键字实参:指定参数传给形参,必须写在位置实参后面

可变长参数

*

  1. *实参:把元组/列表打散成位置实参一个个传给形参,类似于解压缩
  2. *形参:接收多余的位置实参,储存为元组的形式
import random
import time

with open('0531总复习.md','r',encodint='utf8') as fr:
    for i in range(50):
        fr.read(random.randint(1,300))
        time.sleep(30)

**

  1. **实参:把字典打散成关键字实参一个个传给形参,
  2. **形参:接收多余的关键字实参,存储为字典的形式,**kwargs

函数对象

def f1():
    pass

# 1.引用
f = f1

# 2.当作返回值
def f2():
    return f1
    
# 3. 当作参数传入
def f3(func):
    func()
f3(f1)

# 4. 作为容器元素

lis = [1,2,3,[2,3],f1,f2,f3]

函数嵌套

def f1():
    def f2():
        pass

名称空间与作用域

  1. 内置名称空间
  2. 全局名称空间
  3. 局部名称空间
  • 执行顺序:内置--》全局--》局部
  • 查找顺序:从当前位置开始,如果当前为局部,则为局部--》全局--》内置

作用域: 全局的变量和局部的变量没有任何关系,即使两者中有同一名字的变量,同意名字的变量之间进行任何操作都不会影响对方

x = 10

def f1():
    x = 2
    print(x)  # 2
    
f1()

print(x)  # 10

可变的作用域事项(了解)

lis = [1]

def f1():
    lis[0] = 2

f1()

print(lis)  # [2]

闭包函数

def f1(x):
    def f2():
        print(x)
    return f2
    
f = f1(5)  # f-->f2,x=5
f()  # f()-->f2(),x=5  # 5
f()  # 5


f3 = f1(3)  # f-->f2,x=3
f3()  # f()-->f2(),x=3  # 3
f3()  # 3
  • 把内部定义的变量放到内部的函数中,让两者一起返回出去

装饰器


def deco(func):
    def wrapper(*args,**kwargs):  # 赋值后的time_sleep
        res = func(*args,**kwargs)  # 真正的time_sleep
        
        return res
    return wrapper

@deco  # time_sleep(赋值后的) = deco(time_sleep(真正的))
def time_sleep(name):
    print(name)
    return 123

无参装饰器

is_login_dict = 'username': None


def login_deco(func):
    
    def wrapper(*args, **kwargs):  # 赋值后的time_sleep

        if not is_login_dict['username']:

            username = input('请输入你的用户名》》》').strip()

            if username != 'fanping':
                print('非法登录')

                return

            is_login_dict['username'] = username

            res = func(*args, **kwargs)  # 真正的time_sleep

            return res
        else:
            res = func(*args, **kwargs)  # 真正的time_sleep

            return res         

    return wrapper


@login_deco
def shopping():
    print('from shopping')


@login_deco
def withdraw():
    print('from withdraw')

有参装饰器

is_login_dict = 'username': None

def auth(origin):
    
    def login_deco(func):

        def wrapper(*args, **kwargs):  # 赋值后的time_sleep

            if origin == 'file':

                if not is_login_dict['username']:

                    username = input('请输入你的用户名》》》').strip()

                    if username != 'fanping':
                        print('非法登录')

                        return

                    is_login_dict['username'] = username

                    res = func(*args, **kwargs)  # 真正的time_sleep

                    return res
                else:
                    res = func(*args, **kwargs)  # 真正的time_sleep

                    return res

            elif origin == 'mongodb':
                print('非法登录')
                
            else:
                print('dsb')


        return wrapper
    
    return login_deco


# f = origin('file')  # login_deco
# shopping = f(shopping)
# shopping()


@auth('file')
def shopping():
    print('from shopping')


@auth('mongodb')
def withdraw():
    print('from withdraw')

泛型-总复习(代码片段)

泛型的理解1.泛型的概念所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对... 查看详情

面向对象编程-总复习(代码片段)

目录面向对象基础面向对象编程类与对象对象的属性的查找顺序给对象定制独有属性对象的绑定方法类与数据类型面向对象进阶类的继承类的派生类的组合菱形继承问题多态与多态性类的封装类的property特性类与对象的绑定方法... 查看详情

p1总复习(代码片段)

目录计算机之编程计算机组成原理计算机之操作系统编程语言变量内存管理数据类型用户交互input格式化输出基本运算符流程控制数据类型的内置方法计算机之编程什么是编程语言人与计算机交互的介质什么是编程人通过编程语... 查看详情

《微型计算机原理与接口技术》期末总复习——一篇匆匆忙忙的复习笔记(代码片段)

这篇复习笔记是针对《微型计算机原理与接口技术》后面几章的前面的汇编复习内容在“零、学习笔记总目录”的“汇编考前复习”中✅这篇笔记中可能存在一些错误,欢迎在留言区提出,笔者会及时更正。所有内容更... 查看详情

穷吉201771010119总复习(代码片段)

实验十八 总复习实验时间2018-12-301、实验目的与要求(1)综合掌握java基本程序结构;(2) 综合掌握java面向对象程序设计特点;(3)综合掌握javaGUI 程序设计结构;(4)综合掌握java多线程编程模型;(5)综合编程练习。2、实验... 查看详情

实验十八总复习(代码片段)

...        实验十八  总复习                                 查看详情

实验十八总复习(代码片段)

实验十八 总复习实验时间2018-12-301、实验目的与要求(1)综合掌握java基本程序结构;(2)综合掌握java面向对象程序设计特点;(3)综合掌握javaGUI程序设计结构;(4)综合掌握java多线程编程模型;(5)综合编程练习。2、实验内容和步... 查看详情

计算机网络:(终章)4万字长文,总复习(代码片段)

小白终于在这个学期学完了计算机网络然后综合了一下复习资料,希望大家给予支持。下面是文件的预览版,因为typora的图片上传比较麻烦,我就放在我主页作为资源文件上传了,喜欢的话,谢谢大家支持ÿ... 查看详情

java总复习(代码片段)

易错考点:1.通过类名不可以调用实例方法,可访问静态成员。2.通过对象名可以访问静态成员,和非静态成员。3.静态方法不能直接调用非静态方法,而实例方法可访问静态方法。4.自定义类时不允许定义如下方... 查看详情

期中复习(代码片段)

模拟考试的题:0706:输出Fibonacci数列总时间限制: 1000ms 内存限制: 65536kB描述Fibonacci数列指的是数列第一项和第二项为1,之后每一项是之前两项的和所构成的数列。现有多组数据,每组数据给出一个数字n,请你输出Fibon... 查看详情

第一阶段复习(代码片段)

目录总复习计算机之编程什么是编程语言什么是编程为什么要编程计算机组成原理计算机五大组成CPU内存外存输入设备输出设备I/O设备32位和64位32位64位多核CPU硬盘工作原理机械硬盘工作原理固态硬盘工作原理计算机操作系统文... 查看详情

runloop总(代码片段)

p.p1margin:0.0px0.0px0.0px0.0px;font:14.0px"YuantiSC"p.p2margin:0.0px0.0px0.0px0.0px;font:14.0px"YuantiSC";color:#000000span.s1color:#000000span.s2运行循环,保证程序不退出目的:1.保住当前线程的生命2.负责监听事件:iOS所有事件触摸、 查看详情

操作系统期末总复习——绝地求生版(代码片段)

✅2022新年第一篇,献给了OS第1次文章更新——2022/1/218:00文章目录一、考试形式二、重点内容的排序+简单分析三、一纸,一笔,一个晚上,一个奇迹✅1、⭐️⭐️⭐️⭐️⭐️——死锁2、⭐️⭐️⭐️⭐️—... 查看详情

第21讲++总复习

  查看详情

msp430中断(代码片段)

...按键触发中断,来实现上次的实验功能。直接上干货代码。现在用中断按键代码如下,voidmain(void)WDTCTL=WDTPW+WDTHOLD;//StopWDTP4DIR|=BIT7;//设置p4.7为输出P4OUT&=~BIT7;//设置p4.7为低电平P2IE|=BIT1;//设置p2.1可以中断P2I... 查看详情

替换空格(代码片段)

...P2指向的内容时,不会影响到P1遍历原来字符串的内容。代码publicStringreplaceSpace(Stringstr)if(StringUtils.isEmpty(str))returnnull;StringBuildersb=newStringBuilder(str);intp1=sb.length()-1;//这里的循环i要小于p1而不是sb.length(),不然会死循环for(inti=0;i<p1;... 查看详情

计算机网络复习应用层(代码片段)

1、应用架构(1)CS对于CS架构(Client/Server),网络中的每个节点是不对称的,具体而言可以分为两类:服务端(Server):服务端拥有资源,为客户端提供服务,每个客户端都能与服务端联系客户端(Client):客户端需要资源,向服务端... 查看详情

mysql总复习

学完mysql之后的总结,如有疑问,欢迎提出,共同进步! 1、介绍:    DDL:数据定义语言(DataDefinitionLanguage,DDL)    基本操作:createdrop alter    DML:数据操作语言(DataManipulationLanguage,DML)    基本操... 查看详情