Python编程语言整理

一、简介
python是一款清晰的、强大的编程语言。
python有很多解释器版本:
CPython是使用C编写的。它是最初和最广泛使用的版本,通常新的语言特征都是先从这个版本开始出现。
Jython是java实现的一个版本。它既可以作为java应用的脚本,也可以使用java类库来创建工程。它也可以用来测试java类库。
Python for .NET实际上是使用CPython的版本,但是可以管理.net应用,以及使用.net库。
IronPython是python for .net的一个替代方案。它是生成IL,将Python代码编译成.NET assemblies的完整的Python实现。

PyPy是完全由python写的一款Python解释器版本。它提供一些其他解释器没有的先进特征,比如支持stackless、即时编译。

二、显著特点
2.1 使用简洁的语法,使的你所写的程序更加容易阅读
2.2 是一款易于使用的语言,它让你的程序运行变得简单。
2.3 拥有一套很大的标准库,提供了很多通用的支持。
2.4 python相互影响的模块,会让测试代码片段变得更容易。
2.5 同过在编译语言中,如C、C++,引入新的模块,实现轻松扩展。
2.6 能够嵌入到应用中,提供可编辑的接口。
2.7 能够适应多平台。
2.8 免费的开源的
三、语言特点
3.1 可以使用多种基本数据类型,如numbers、strings、lists、dictionaries等等
3.2 支持面向对象编程
3.3 代码可以分组放在modules或packages里。
3.4 支持抛出和捕获异常、结果
3.5 强数据类型、动态数据类型
3.6 包含高级编程语言特点
3.7 自动内存管理
四、注释
4.1 单行注释使用#
4.2 多行注释使用'''开始,以'''结束       
五、变量
python解释和声明变量,是在为变量赋值时。
变量类型转换:
int()
str()
float()
六、运算符
+
-
*
/
**指数运算
//取整
    %
七、控制
if condition:
        elif condition:
else


八、函数
定义def functionName(params....)
调用functionNeme(params...)
九、string
count(s)
find(c)
lower()
upper()
replace(a,b)
strip()

取string中某个字符或一段字符:stringVar[index],stringVar[begineIndex:endIndex];index从0开始;endIndex为负数时表示去除倒数endIndex个字符开始以后的一段字符

以unicode编码的字符串以u'...'形式表示
string的拼接方法:
1.+
 str1+str2
2.,
 str1,str2
 中间会有空格
3.直接放在一起
 str1str2
4.%
 "%s,%s"%(str1,str2)
        5.join
         str.join(list)
     它是将str作为分割符插入list的元素之间

十、list
python没有array,但有list。list下标从0开始
例:
aList = [......]元素之间使用逗号分割。
取list元素:aList[index]
方法:
append(x)追加单个元素
extend(L)追加一个list
insert(i,x)插入
remove(x)删除第一个x
pop(i)移除第i个元素,并返回
pop()移除最后一个元素并返回
clear()删除所有元素
index(x)返回第一个x在list中的下标
index(x,start)返回从start开始往后的第一个x所在的list的下标
index(x,start,end)返回从start开始到end结束的第一个x所在的list中的下标
count(x)统计x出现的次数
sort(key=None,reverse=False)
reverse()颠倒元素顺序
copy()
len(list)返回list长度,也可以用于返回string长度
十一、tuple元组
tuple是不可变的list,即赋值后元素不可再增删。
可以使用list(tuple)将tuple转成list
元组与list相近,不同之处在于,元组元素不可变;元组使用小括号包裹,list使用方括号。
元素之间依然使用逗号分割。
a=(a1,a2...)
只包含一个元素是需要在元素后面加上逗号,a=(a1,)
获取元素,例a[0]或a[0:2](不包含2)
元组元素不允许更改,两个元组可以组成一个新的元组,例a2=a1+a2
元组元素不允许删除,可以删除整个元组,使用del a1 
任意符号对象以逗号分割,默认我元组,例x,y
十二、dictionary
dictionary是python特别的,有点类似json格式
例:
dic={'key':value,.........}
取值dic[key]
十三、format
用户字符串格式化
例:
"......%f" %0.12345
%f浮点型
%.nf精确到小数点以后n位
%s字符串
%.ns截取前n位字符串
十四、exception
try:
......
except:
......
十五、文件
open(fileName,option)option有r、w
read(n)读取n个字符
readline(n)
read()
close()
write(str)
十六、class
_init_(self)告知python创建该class的实例
from ... import ...
创建class对象objVar = AClass()
class 定义 class  classname:
类体....
继承类class classname(fartherclassname)
类体....
十七、logical line
逻辑行。一个Python项目被分为一系列的逻辑行。
一行logical line包含一或多行physical line,行尾使用\,如果是内部换行则不需要特别使用\,比如说是括号内。

十八、异常
例:try:
...
except [exception,...]
...
else:
...
例:try:
...
except:
raise
例:try:
...
except [exception,...]
...
finally:
...
raise是手动触发异常,执行后,后面的语句不再执行
finally是在异常触发前执行。
十九、加解密
   python拥有自带的加密模块crypt,它是基于DES单向加密方式加密
   crypt.crypt(word, salt)主要用于加密密码保存
   
   python第三方库有m2crypto、pycrypto、openssl等用户加解密,其中m2crypto及pycrypto都支持AES加解密,openssl用于证书认证
   m2crypto加密例子:
from M2Crypto.EVP import Cipher
import base64
ENCRYPT_OP = 1
def aes_encrypt(key,content):
  iv="abcd1234abcd1234"
  cipher = Cipher(alg = 'aes_128_cbc', key = key, iv = iv, op = ENCRYPT_OP)
  buf = cipher.update(content) + cipher.final()
  return base64.encodestring(buf)
   pycrypto加密例子:
from Crypto.Cipher  import AES
import base64
def aes_encrypt(key, content) :
  aes_iv = 'abcd1234abcd1234'
  cryptor = AES.new(key, AES.MODE_CBC, aes_iv)
  content = content + ("\0"*(16-(len(content)%16)))
  ciphertext = cryptor.encrypt(content)
  return base64.encodestring(ciphertext) 
二十、python库安装及卸载
    python库提供setup脚本时:一般安装执行python setup.py build;python setup.py install
    卸载python库时,如果提供了setup脚本:python setup.py install --record file_path,file_path用于存放安装的一些文件路径;cat file_path|xargs rm -rf,要root下执行;


二十一、print
Python输出stdout会使用缓存,print字符串不会立即输出到指定文件,解决办法:
1.在print后调用stdout的flush()函数
2.在执行python脚本是使用‘python -u 脚本’,-u参数是禁止python使用stdout缓存。
二十二、单元测试
1.unittest
unittest包含几个重要的概念:
test fixture表示一个或多个测试用例的准备及清理操作。例如,可能会包含创建临时或代理数据库,目录,或者是启动服务进程。
test case是测试中最小的单元。它用于校验一个特定的输入集合的具体的响应结果。unittest使用一个基本的class TestCase来创建一个新的test case。
test suite是多个test case或test suite或者两者混合的集合。它是用来聚合哪些需要一起执行的测试。
test runner是用来精心策划执行测试并返回个使用者结果的一个部件。它可以使用图标、文本、或者一个特殊的值来表示测试执行结果。
一个testcase必须使用unittest.TestCase构建。
测试用例的方法名以test开头。
        assertEqual用来校验结果,assertTrue或assertFalse用来判断条件,assertRaises用来判断抛出的异常是否是指定异常。assert语句是让test runner汇聚整理所有的测试结果,并产生报告。
        setUp方法是在调用测试方法前执行,用于预先构建资源环境。
tearDown方法是在测试结束后执行,用于释放资源。
如果直接跑测试用例的Python文件,Python文件里需要调用unittest.main()才能运行测试用例。
如果不使用unittest.main方法,可以构建testsuite,然后调用testrunner run方法运行suite。例如:
suite=unittest.TestLoder().loadTestsFromTestCase(testcase classname)
unittest.TextTestRunner(verbosity=2).run(suite)
2.mock
二十三:python内置变量
__name__如果此变量在当前进程调用的Python文件里,则此变量的值是__main__;如果其出现在当前进程调用的module里,则此变量是引用的module名。
__all__表示该package或module里能够允许外界导入的modules、classes、functions,不在该list里的均不允许外界import
__file__表示该变量所在文件的路径

python第三方库下载地址https://pypi.python.org/simple

你可能感兴趣的:(Python编程语言整理)