杂记

函数直接调用方式:函数名加上小括号
def log():
  '日志功能'
  pass

def index():
  log()
  print(====)
        *args   一个*是列表  非固定长度参数,可接受列表
        **kwargs 两个*是字典

线程和进程解释:

  1. 由于线程操作系统直接支持的执行单元,通常高级语言都内置多线程的支持,在python标准库提供了两个模块:threading和_thread,其中threading是高级模块,_thread是低级模块,对_thread进行了封装,绝大多数情况下,使用threading模块。
  2. 进程之间不能共享数据,那么线程之间可以共享数据,在一个进程内,所有线程共享全局变量。
  3. 可以理解为进程就相当于一个容器,例如大房子,那么线程就相当于这个大房子内的一个人,那么这个人可以使用多个房间或者卫生间,一个人,可以理解为单线程,如果是多个人,可以理解为多线程。
  4. 但是当容器(大房子)里有多个人时候,就不能随意使用房间或者厕所了,不然会非常混乱,这个时候,就会现了‘互斥锁’,一个防止他人随意进入的简单方法,就是加上一把锁,先到人的锁上,后到的排队,等锁打开里面的人出来,后面的人在进去。
  5. 互斥锁:防止多个线程同时读写一块区域,互斥锁为资源引入一个状态‘锁定’和‘非锁定’,某个线程要更改共享数据时,先将其锁定,其他线程不能更改,直到该线程释放资源时,状态为‘非锁定’时,其他线程才能再次锁定该资源,‘互斥锁’保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。

eval

eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值。

import json
x="[null,true,false,1]"
print(eval(x))
print(json.loads(x))

while循环运行一段代码

    n = 1
    while n < 5:
        create_order_mt = meituan_api.meituan_create_order(create_order_param)
        print('创建订单结果为:', create_order_mt)
        if create_order_mt['code'] == 200:
            break
        n += 1

运行结果如下:
创建订单结果为: {'code': 400, 'msg': '创建订单失败:未找到订单信息', 'data': ''}
创建订单结果为: {'code': 400, 'msg': '创建订单失败:未找到订单信息', 'data': ''}
创建订单结果为: {'code': 400, 'msg': '创建订单失败:未找到订单信息', 'data': ''}
创建订单结果为: {'code': 400, 'msg': '创建订单失败:未找到订单信息', 'data': ''}

Process finished with exit code 0

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 虚拟机 编译 早期编译(优化)解析与填充符号表过程词法分析-->Token序列语法分析-->抽象语法树填充符号表注...
    Yves_Chen阅读 494评论 0 0
  • https://www.jianshu.com/p/c8dd2cb55b81 部分摘取自网络,标记一下自己的学习,...
    红色海_阅读 146评论 0 0
  • SpringCloud Ribbon、Hystrix、Feign之间关系 Spring三级缓存解决循环依赖 Spr...
    life_zl阅读 302评论 0 0
  • 1. 缓冲池(buffer pool)总结: (1)缓冲池(buffer pool)是一种常见的降低磁盘访问的机制...
    JYZL1314阅读 178评论 0 0
  • 第十一天 并发编程和异步编程(1) 今天计划学习Python的多线程编程异步编程,学习项目及练习源码地址:GitH...
    6d1bf2ffc4f3阅读 1,360评论 0 50