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()
  • 相关阅读:
    和菜鸟一起学android4.0.3源码之硬件gps简单移植
    Android学习笔记(三一):线程:Message和Runnable
    Android Runnable 运行在那个线程
    Android 的消息队列模型
    iOS开发UI篇—iOS开发中三种简单的动画设置
    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明
    ios开发UI篇—Kvc简单介绍
    iOS开发UI篇—从代码的逐步优化看MVC
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
  • 原文地址:https://www.cnblogs.com/wt1103/p/10165243.html
Copyright © 2011-2022 走看看