【python学习笔记】复习知识点随机

    # zip() 将给定的数据中对应的元素打包成一个元组
    m1 = 'abc'
    m2 = [10, 20]
    m3 = ['red', 'yello']
    a = zip(m1, m2, m3)  # 将给定的数据中对应的元素打包成一个元组,不等长,以最短的序列为准,返回可迭代对象
    print(a) #<zip object at 0x000002759F40B400>
    b = list(a)  # 存储在列表中
    print(b) # [('a', 10, 'red'), ('b', 20, 'yello')]

    # zip解压
    print(list(zip(*b))) # [('a', 'b'), (10, 20), ('red', 'yello')]

    # zip与for配合使用
    for m1, m2, m3 in zip(m1, m2, m3):
        print(m1, m2, m3)
    '''
    a 10 red
    b 20 yello
    '''
    # enumerate() 用于一个可遍历对象(列表、字符串 元组)组合为一个带索引的元组,同时列出数据的索引和数据 返回可迭代对象
    fruits = ['apple', 'banana', 'peach']
    print(enumerate(fruits))  # <enumerate object at 0x0000014A48E8A540>
    print(list(enumerate(fruits))) # [(0, 'apple'), (1, 'banana'), (2, 'peach')]
    for index, fruits in enumerate(fruits):
        print(index, fruits)
    '''
    0 apple
    1 banana
    2 peach
    '''

2、函数返回值:将信息存入到变量里面,可以返回任何类型的值,包括列表、字典等等,因为返回的是变量,变量的类型可以为任意类型;

3、模块:一个.py文件就是一个模块,里面定义了一些函数和变量,需要使用时直接调用即可;

4、包:是在模块之上,是很多模块的集合

5、库:具有相关功能模块的集合

6、局部变量和全局变量:

    '''函数内部的变量名如果第一次出现,并且出现在=前面,那么这个变量就会被当做局部变量'''
    num = 100
    def fun():
        num = 123  # 局部变量
        print(num)
    fun()   # 123

    num = 100
    def fun():
        num += 100  # num = num + 100
        print(num)
    fun()  # UnboundLocalError: local variable 'num' referenced before assignment

    '''函数内部的变量名如果第一次出现,并且出现在=后面,且该变量在全局中已定义,那么在函数内部就会引用该变量'''
    num = 100
    def fun():
        x = num + 100   # num出现在=后面 且在全局中已经定义
        print(num, x)
    fun()  # 100 200

    '''局部变量优先原则'''
    num = 100
    def fun():
        num = 200
        x = num + 100   # num出现在=后面 且在全局中已经定义
        print(num, x)
    fun()  # 200 300
    print(num) # 100

    '''将局部变量改为全局变量'''
    num = 100
    def fun():
        global num #将局部变量改为全局变量
        num = 200
        num += 200
        print(num)
    fun()  # 400
    print(num) # 400

 7、匿名函数和map函数

    '''
    map(function, iterable)
    函数, 一个或多个序列
    '''
    data = list(range(0,11)) 
    print(map(lambda x,y:x+y,data,data)) # <map object at 0x00000240DBEEC190>
    print(list(map(lambda x,y:x+y,data,data))) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

8、random模块

    '''
    随机模块random
    '''
    print(dir(random))
    '''
    常用方法:randint', 'random', 'randrange', 'sample','choice' 'seed', 'shuffle'
    random() 方法返回随机生成的一个实数,它在[0,1)范围内。
    random.randint(a,b) 函数返回数字 N ,N 为 a 到 b 之间的数字(a <= N <= b),包含 a 和 b。
    random.randrange ([start,] stop [,step]),从给定的范围返回随机项。
    seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数,本函数没有返回值。
    shuffle() 方法将序列的所有元素随机排序。参数lst--列表  返回值None
    '''

    print(random.random())  #生成0-1之间的随机小数 如:0.7721423968855717

    # seed(x)方法,改变随机数生成器的种子,x为任意数字,调用seed后,生成的随机数将会是同一个
    random.seed(10)
    print(random.random())  # 生成的随机数将会是同一个 0.5714025946899135

    print(random.randint(1, 100))  # 生成1-100之内的随机整数: 如 55
    print(random.randrange(0, 10, 2))  #生成0-10之内步长为2的随机整数:如 6
    print(random.randrange(10))  #生成0-9的随机整数:如 9

    print(random.sample('abcdefs' ,3))  # 在目标序列中随机挑选3个 ['e', 'a', 'b']
    print(random.choice('abcdefs'))  # 在目标序列中随机挑选1个  d
    print(random.choices([1,2,3,4,5]))  # 在目标序列中随机挑选1个  [5]

    list = [20, 16, 10, 5]
    print(random.shuffle(list))  # 返回None
    print(list)  # [16, 20, 5, 10]

9、文件读操作:

    '''
    文件操作:
    1、复制为路径:按住shift键 + 选中文件点鼠标右键 选择复制为路径
    2、修改文件的编码方式:文件另存为 选取编码方式 一般为utf-8
    3、绝对路径:C:/Users/z00/Desktop/yrdy.txt
    4、相对路径(./当前目录下  ../上一层目录下)
    '''

    '''
    文件读取
    f.read() 一次读取
    flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
    一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
    '''
    f = open(r'Usersz00Desktopyrdy.txt', encoding='utf-8')  # 注意路径为/,可加r解决,或者直接修改为/
    context = f.read()
    print(context)
    '''
    测试
    test
    '''
    f.close()

    '''
    文件读取
    f.readline() 一行一行读取
    '''
    f = open(r'C:Usersz03Desktopyrdy.txt', encoding='utf-8')
    context = f.readline()
    context1 = f.readline()
    print(context.strip()) # 测试
    print(context1.strip()) # test
    f.flush() # 刷新缓冲区
    f.close()

    '''
    文件读取
    f.readlines() 将每一行形成一个元素,置于列表里面
    '''
    f = open(r'C:Usersz0Desktopyrdy.txt', encoding='utf-8')
    context = f.readlines()
    print(context)  # ['测试
', 'test']
    f.flush() # 刷新缓冲区
    f.close()

    '''
    文件读取 for循环实现逐行读取  用的比较多
    '''
    f = open(r'C:Usersz00Desktopyrdy.txt', encoding='utf-8')
    for line in f:
        print(line, end='')
    '''
    测试
    test
    '''
    f.flush() # 刷新缓冲区
    f.close()

10、文件写操作

 # 读取pdf文件  rb模式读取pdf文件
    f = open(r'E:A工具书籍金字塔原理.pdf', mode='rb')
    context = f.read()
    print(context)
    f.flush()
    f.close()

    #  文件写
    f = open(r'C:Usersz003Desktopyrdy.txt', mode='w', encoding='utf-8')
    f.write("test")
    f.flush() # 刷新缓冲区
    f.close()

    # 批量创建文件
    def out(num):
        for i in range(num):
            path = r'C:Usersz00Desktop	est	est' + str(i) + '.txt'
            f = open(path, 'w')
            f.write("test")
            f.flush() # 刷新缓冲区
            f.close()
    out(10)

    mode = 'wb' 可以不用指定打开文件的编码,前提:写出文件的时候,指定字符串的编码 等价于下面的写法
    f = open(r'C:Usersz00Desktopyrdy.txt', mode='wb')
    f.write("静夜思".encode('utf-8'))
    f.flush() # 刷新缓冲区
    f.close()

    f = open(r'C:Usersz00Desktopyrdy.txt', mode='w',encoding='utf-8')
    f.write("静夜思")
    f.flush() # 刷新缓冲区
    f.close()

    # 读写模式 mode ="r+" 必须先读后写 且为追加的方式写
    f = open(r'C:Usersz00Desktopyrdy.txt', mode='r+',encoding='utf-8')
    content = f.read()
    print(content)
    f.write("李白")
    f.flush() # 刷新缓冲区
    f.close()

    # 推荐的文件操作方式
    with open(r'C:Usersz00Desktop	est.txt', mode='r+', encoding='utf-8') as f:  # 不需要关闭
        content = f.read()
        print(content)
        f.write("李白")

  

原文地址:https://www.cnblogs.com/zhaoyujiao/p/15471317.html