zoukankan      html  css  js  c++  java
  • 小作业 10

    1.什么是面向对象的mro

    获取类的继承顺序(多继承)(对象.__mro__)

    2.json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

    在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。

    import json
    d = dict(name='三桥',age=30)
    jd = json.dumps(d,ensure_ascii=False)
    print(jd)

    3.简述 yield关键字。

    随着生成器调用next方法,得到yield的值

    1、返回的是一个迭代器,用迭代器的next函数,会返回迭代器的下一个值;

    2、下次执行会直接跳到yield,就像在这个地方设置了一个断点;

    3、如果有多个yield,会先迭代完一个,顺序迭代下一个,就是递归一样。

    4.简述 OSI 七层协议。

    应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

    7.GIL锁是什么鬼

    GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。

    GIL保护的是解释器级的数据,保护用户自己的数据则需要自己加锁处理

    lock = Lock() # 保护互斥量

    lock.acquire() # 加锁  lock.release() # 解锁

    9.如何在一个function里面设置一个全局的变量? 

    global

    编程练习

    1.创建一个文件,文件的第一行写入0,再创建20个任务线程,他们同时打开文件并将文件第一行读出来,加1写回去(将文件原有值覆盖掉)请保证20个任务线程完成后,文件中的第一行一定是20!

    from threading import Thread
    with open('text',mode='w+') as f:
        f.write('0') # 创建一个文件,文件的第一行写入0
    def add():
        with open('text',mode='r') as f1:
            l = int(f1.read()) # 将文件第一行读出来
            l += 1
        with open('text',mode='w') as f3:
            f3.write(str(l)) # 每次执行都加一并写入
    # 创建20个任务线程
    if __name__ == '__main__':
        for i in range(20):
            thr = Thread(target=add)
            thr.start()
            thr.join()
  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/wt1103/p/10165243.html
Copyright © 2011-2022 走看看