Python 开发

1、GIL,CPython,Python跟编译器没关系,语言有多个编译器,如:JPython、IronPython等,其他语言如是。GIL对IO密集型友好,计算密集型惨淡

2、pass,定义空执行函数

3、列表、元组(相当于只读列表)、字典

4、python2、python3、pip、项目私有包

5、redis,get 的数据是byte,显示时带有b,通过 r.get('xxx').decode() 去除

6、类:@property、@staticmethod、@classmethod

7、包:

包就是文件夹,但该文件夹下必须存在 __init__.py 文件。最简单的包是只有一个空 __init__.py 文件。

import sound.efforts.echo
from sound.effects import echo
from sound.effects.echo import echofilter

需要注意的是  from package import item    方式导入包时,这个子项(item)既可以是子包也可以是其他命名,如函数、类、变量等。若无,会引发ImportError异常。

而用类似 import item.subitem.subsubitem 这样的语法时,这些子项必须是包,最后的子项可以是包或模块,但不能是类、函数、变量等。

import * 这样的语句理论上是希望文件系统找出包中所有的子模块,然后导入它们。这可能会花长时间,并出现边界效应等。Python 解决方案是提供一个明确的包索引。

这个索引由 __init__.py  定义 __all__ 变量,该变量为一列表,如上例 sound/effects 下的 __init__.py 中,可定义  __all__ = ["echo","surround","reverse"] 

8、__name__:

if __name__=="__main__":  # 推荐使用这种方式调试代码,只有执行当前模块的人才会执行以下代码,如果是别人调用该模块,以下的代码是不会被执行的;这也是python的运行特点
    foo()

9、多重继承

10、global,只声明不赋值

11、.pyc:Python会在执行.py文件的时候,将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快下次执行文件的速度。所以,在我们运行python文件的时候,就会自动首先查看是否具有.pyc文件,如果有的话,而且.py文件的修改时间和.pyc的修改时间一样,就会读取.pyc文件,否则,Python就会读原来的.py文件。其实并不是所有的.py文件在与运行的时候都会产生.pyc文件,只有在import相应的.py文件的时候,才会生成相应的.pyc文件

  pyo:是python编译优化后的字节码文件。pyo文件在大小上,一般小于等于pyc文件。

12、函数加上()就是会执行这个函数,不加的话就是个名字,可以随处传递

13、http服务器:supervisor + uwsgi + flask

原文地址:https://www.cnblogs.com/linguoguo/p/10244704.html