python中的小知识点

  这里是一些小知识点的汇集,为的是以后查找的方便。

  行与缩进:

    物理行:实际看到的代码行数。

    逻辑行:在意义上的函数(即解释器执行的行数)

    如果一个物理行中包含了多个逻辑行,则每个逻辑行之间需要用分号 “;” 隔开,最后一个逻辑行可以省略分号

    一个逻辑行分为了多个物理行的话使用转义符 "\" 进行每个物理行之间的连接

    缩进:逻辑行行首的空白,一般情况下行首不留空白

      if和while语句的缩进:条件下的一个tab字符

 

  运算符:

    //:除法,向下取整

    %:取余

    &:二进制下的按位“与”运算

    |:按位或

    ^:按位异或(不同为1,相同为0)

    ~:按位翻转 ~x=-(x+1)

    <<:二进制左移,左移n个单位相当于乘以2^n

    >>:二进制右移,右移n个单位相当于除以2^n

    运算符优先级:

    1. 函数调用、寻址、下标
    2. 幂运算**
    3. 翻转运算
    4. 正负号
    5. *  /   %
    6. +   -
    7. <<   >>
    8. &  ^  |
    9. 比较运算符:>  < >= <=
    10. 逻辑的  not and or
    11. lambda表达式

  表达式和print执行的区别:表达式在命令行中输入单行命令,如:>>>a=“hello”    >>>a    则会有’hello‘ 而如果是print(a),则是hello,不加引号。

 

  map和列表解析的区别由以下代码可看出差异:

    

li =[x for x in range(1,11)] #列表解析
print(li)
def func(x):
    return x+10
li2 = map(func,li)  #遍历
print(list(li2))

  强调一点的是map跟li是等长的,而列表解析则可以加筛选条件使其不等长。

   

  5种 IO model

  •     blocking IO    阻塞IO
  •     nonblocking IO   非阻塞IO
  •     IO multiplexing   IO多路复用
  •     signal driven IO  信号驱动IO
  •     asynchronous IO    异步IO

 

  同步、异步、io多路复用的区别

  同步即一个io操作完成之后才能执行其他io操作,在等待过程中不能执行其他命令,而异步io则可以在启动io操作之后则跳到另一个线程,在该io操作发出执行完毕的操作后将再跳回执行该线程,可以节省等待的时间,但是如果io操作很简单且数量大时,同步比异步还相对省时。同步是执行中阻塞,异步非阻塞

  异步和io多路复用的区别:当当前io操作执行完毕之后,异步会将数据传到内存里,等着你去调用,整个过程没有任何的阻塞,io多路复用是依然存在内核中,还需要去调取。io多路复用依然有阻塞,只是阻塞在select或epoll中而不是在select IO中,所以io多路复用并不是异步IO。但是异步的实现过程比较复杂,所以现在最常用的还是IO多路复用

  做个不恰当的比喻来区分:

  •     阻塞IO相当于你自己寄快递,从拿快递到送快递都需要你完成
  •     非阻塞IO相当于你把快递给了快递公司,快递到了之后给你发个短信,你亲自跑去取
  •     IO多路复用则是你把快递给了很多个快递公司同时进行快递,一有快递则会通知你去取
  •     异步IO则是你雇了一个人,让他去寄快递,快递到了之后他帮你取到家门口。

  

posted @ 2017-09-24 10:32  KeepLearning_!  阅读(288)  评论(0编辑  收藏  举报