zoukankan      html  css  js  c++  java
  • Python基础整理

    生成pyc文件

    python -m foo.py # .py忽略
    

      

    第一章 Python介绍


    1.3 基本类型

    操作符 +,-,*,/,%,**(幂),divmod(除法)
    divmod(10,3)=(3,1)

    None表示出错

    表示假: None,0,0.0,"",[],(),{} (空)
    逻辑运算: and,or
    表达式:<cond> and <expr_true> or <expr_false>

    cond expr_true expr_false reslut
    true true all expr_true
    false all all expr_false
    true flase all expr_false


    1.4 列表list[]

    a=[1,2,3] 用[]声明即可
    index范围(-len,len-1)
    a[-3]=1 a[-2]=2 a[-1]=3 a[0]=1 a[1]=2 a[2]=3

    子list,原list的copy,副本:a[1:3]=[2,3],默认0,len或者-1

    L.append(var),追加在index为len的位置
    L.count(var),计算var出现的次数
    len(L),返回长度
    L.extend(list),追加list在后面
    L.index(var),返回var在L中的index位置,无则抛异常
    L.insert(index,var),在index位置插入var,其余元素后退
    L.pop(index),删除index元素并返回,没有index则为最后一个元素
    L.remove(var),找到var删除,一次只能删一个,无则抛异常
    L.reverse(),倒置
    L.sort(),顺序排序

    模拟栈stack,appen()压栈,pop()出栈
    模拟队列queue,insert()入队,pop()出队
    模拟树tree,root=[branch1,branch2],branch1=[left,right]....


    list comprehension,语法:
    [<expr1> for k in L if <expr2>]
    例list整数元素加1,原list不变:[ k+1 for k in list type(k)==types.IntType]


    1.5 字符串string

    float(str) 变成浮点数
    int(str,base) 按照base(默认10)进制变成10进制整数
    long(str,base) 按照base进制变成长整数

    str.capitalize() 首字母大写
    str.lower() 变小写
    str.ipper() 变大写
    str.swapcase() 大小写互换
    len(str) 获得长度
    str[index:len] 获得子串,同list语法
    判断字符
    str.isalnum() 范围[A-Za-z0-9]
    str.isalpha() 范围[A-Za-z]
    str.isdigit() 范围[0-9]
    str.islower() 范围[a-z]
    str.isupper() 范围[A-Z]
    str.istitle() 单词首字母大写
    str.isspace() 空白字符, , , ,’ ’

    str.find(substring,[start [,end]]) 返回substring首次出现位置,无则为-1
    str.rfind(substring,[start [,end]]) 同find(),反向查找
    str.index(substring,[start [,end]]) 同find(),无则抛异常
    str.rindex(substring,[start [,end]]) 同index(),反向查找
    str.count(substring,[start [,end]]) 返回substring出现次数,无则为0

    %s 字符串 (同print str(obj)打印效果)
    %d 有符号十进制整数 %o 无符号八进制 %u 无符号十进制 %x 无符号十六进制(小写)
    %e 科学表达式(小写) %E 科学表达式(大写)
    %f 浮点数(小数点后6位) %g 浮点数(小于0.0001或者不够精度,科学表示法)
    >>> "%f and %f"%(-0.00001,200.0)
    ’-0.000010 and 200.000000’
    >>> "%g and %g"%(-0.00001,2000000.0)
    ’-1e-05 and 2e+06’
    %c ASCII整数表示成字符 %r 表示为字符串(同print expr(obj)打印效果)

    str.join(words),words是只含字符的tuple或list,用str作为分隔符将words中的字符串连接起来
    str.split(words),words是分隔字符串,将str分解为list


    1.6 元组tuple()

    常量list,用()表示a=(1,2,3),只有一个元素用(1,)与变量区分

    1.8 字典dictionary{}

    可通过D[key]得到value
    dict(L)可以构造一个dictionary,L是list每个元素都是tuple(key,value)
    例: pricelist={"clock":12,"table":100,"xiao":100 }
    pricelist=dict([(’clock’,12),("table",100),("xiao",100)])
    对不存在的key进行赋值操作,即增加

    D.clear() 清空
    D.copy() copy,独立的
    D.get(key) 返回value,无则为None,D[key]无则抛异常
    D.get(key,default) 无则为default
    D.has_key(key) 返回true或false
    D.items() 得到list
    D.keys() 得到全部key,返回list
    D.values() 得到全部value,返回list
    D.update(E) 从E中得到新数据
    D.popitem() 删除


    1.9 程序流程

    if语句:
    if <expr1>:
    <statement-block>
    elif <expr2>:
    <statement-block>
    elif <expr3>:
    <statement-block>
    ...
    else:
    <statement-block>

    for循环:
    for x in <sequence>:
    <statement-block>
    else:
    <else-block>

    >>> a=[1, 2, 3, 4]
    >>> for x in a:
    ... if x==100: break
    ... else:
    ... print "100 not found"
    ...
    100 not found
    循环未被break中断就执行else语句

    while语句同for

    1.10 函数def

    函数可传递
    参数个数可选,可选参数之后的参数都可选,否则报错
    参数赋值顺序可通过%d...更改

    >>> def printf(format,*arg):
    ... print format%arg
    ...
    >>> printf ("%d is greater than %d",1,2)
    1 is greater than 2
    *arg必须是最后一个参数,*表示多个参数,作为一个tuple来传递,通过arg访问

    >>> def printf(format,**keyword):
    ... for k in keyword.keys():
    ... print "keyword[%s] is %s"%(k,keyword[k])
    ...
    >>> printf("ok",One=1,Two=2,Three=3)
    keyword[Three] is 3
    keyword[Two] is 2
    keyword[One] is 1
    用**按照dictionary的方式传递参数

    两种方式结合使用:
    >>> def testfun(fixed,optional=1,*arg,**keywords):
    ... print "fixed parameters is ",fixed
    ... print "optional parameter is ",optional
    ... print "Arbitrary parameter is ", arg
    ... print "keywords parameter is ",keywords
    ...
    >>> testfun(1,2,"a","b","c",one=1,two=2,three=3)
    fixed parameters is 1
    optional parameter is 2
    Arbitrary parameter is (’a’, ’b’, ’c’)
    keywords parameter is {’three’: 3, ’two’: 2, ’one’: 1}

    doc 函数描述 testfun.__doc__

    lambda函数可以认为是一种匿名函数
    >>> f = lambda a,b: a+b
    >>> f(1,2)
    3
    返回一个lambda函数
    >>> def incfun(a):
    ... return lambda x: x+a
    ...
    >>> incfun(2)(12)
    14

    global语句修改变量的space,需调用函数之后才生效
    嵌套函数,内部函数

    函数改变外部参数的值,可更改所调用对象的值,[],{}...


    1.11 模块module

    可用import module导入
    外部可直接访问元素modname.attribute或者函数modname.funname
    也能导入后直接访问
    >>> from testmodule import age, sayHello
    >>> age
    0
    >>> sayHello
    <function sayHello at 0x81631a4>

    !!自己写的modname不要和系统一样

    package是一组module的集合,解决名称冲突的问题,方便管理


    1.12 命名空间name space

    概念:name space是从名称(name)到对象(object)上的映射(map),当一个name映射到一个object上时,
    我们说这个name和这个object有帮定关系(bind),或者说这个name指向这个object

    常用的name space:build-in name space (内在命名空间),global name space (全局命名空间),
    local name space(局部命名空间),不同的空间中name是互不关联的

    有一个特殊的全局的唯一的 name space,module的 __name__ 是 __main__
    每一个module都有一段这样的代码
    if __name__ == "__main__":
    sayHello() #测试代码

    locals()和globals()分别返回global name space 和local name space,用dictionary来表示

    LGB规则用scope作用域来解释,代码执行时至少有三个name space,L 指local,G指 global,
    B指 buildin(buildin name space)

    用del可删除一个name space中的name,指的是删除name和object之间的关系,与指针类似


    1.13 类class

    obj.__dict__表示obj的name space

    >>> class SampleClass:
    ... def __init__(self):
    ... print "OK, I was born."
    ...
    >>> a=SampleClass()
    OK, I was born.

    a就是SampleClass的别名alias,Python中没有构造函数,但是有初始化函数,
    object创建后,会自动调用__init__,初始化数据

    继承inherit
    语法 class <name>(superclass1,superclass2,...):
    可以多重继承

    __init__(self) 创建
    __del__(self) 删除
    __repr__(self) 重建,eval(repr(obj)) 得到对象的拷贝
    __str__(self) 字符串描述
    __cmp__(self,other) 比较,-1 self小于other,0等,1大于
    __hash__(self) 得到一个32位的hash值
    __nozero__(self) 定义一个对象是否为逻辑假
    __len__(self) 返回长度,未定义则报异常
    __getitem__(self,key) 返回self[key]来模拟list,dict等结构
    __setitem__(self,key,value) 模拟obj[key]=value
    __delitem__(self,key) 模拟 del obj[key]
    __contains__(self,other) 使object处理in语句
    __call__(self,arg1,arg2,...) 像函数一样调用
    __add__(self,other) self + other
    __sub__(self,other) self - other
    __mul__(self,other) self * other
    __div__(self,other) self / other
    __mod__(self,other) self % other
    __divmod__(self,other) divmod(self,other)
    __pow__(self,other) self ** other
    _pow__(self,other,modulo) pow(self,other,modulo
    __lshift__(self,other) self << other
    __rshift__(self,other) self >> other

    迭代器iterator
    >>> s = ’abc’
    >>> it = iter(s)
    >>> it
    <iterator object at 0x00A1DB50>
    >>> it.next()
    ’a’
    >>> it.next()
    ’b’
    >>> it.next()
    ’c’
    >>> it.next()
    重载__iter__() 以支持迭代器

    1.14 异常exception

    一:
    try :
    ... # statements 1
    except ExceptionType :
    ... # statements 2
    执行statements 1,如果发生exception,就把exception的类型和ExceptionType比较,一致就执行
    statements 2,不一致就直接返回,错误向上抛,直到被捕获,如果未被捕获,程序异常终止
    try :
    ... # statements 1
    except (ExceptionType1,ExceptionType2) :
    ... # statements 2
    except (ExceptionType3,ExceptionType4) :
    ... # statements 3
    else:
    ... # statements 4

    二:
    try:
    ... # statements 1
    finally:
    ... # statements 2
    这种方式不能与第一种混用,无论是否发生exception,或是语句return,statements 2都执行
    用于释放资源,同Java finally语句

    抛出异常raise
    >>> try:
    ... raise KeyError, "hello"
    ... except KeyError, arg:
    ... print arg
    ...
    hello


    第三章


    3.2 文件操作

    f=open("filename","r")
    r表示只读,w表示写,rw表示读写,rb读二进制,wb写二进制

    >>> f=open("/tmp/x.txt","w")
    >>> f.write("a")
    >>> f.close()
    >>> f=open("/tmp/x.txt","r")
    >>> f.read()
    ’a’
    >>> f.read()
    ’’

    打开文件写,写入一个字符,关闭,打开文件只读,读出字符
    f.read(size)表示从文件读取size个字符,忽略则读取所有内容,到结尾返回空字符串
    从文件中一个字符的读取
    f.open("/tmp/x.txt","r")
    c=f.read(1)
    while c:
    print c
    c=f.read(1)

    f.readline()读取一行,f.readlines() 读取所有,返回list,每个元素表示一行,包括
    对应的写有writeline,write,writelines

    f.write(str)字符串写入到文件中
    f.tell() 返回当前读取位置
    f.seek(off,where) 定位文件读取位置

    f.close()关闭文件


    3.3 正则表达式regular expression(regexp)

    >>> p=re.compile("abc")
    >>> if p.match("abc") : print "match"
    ...
    match
    >>>

    用来表示无法打印的部分

    为增加可读性,在字符串前面加r来表示raw格式
    >>> a=r"a"
    >>> print a
    a

    3.4 struct

    struct模块处理二进制



  • 相关阅读:
    从gettext来看linux下程序的internationalization
    C++ Convert Operator和其他Operator的应用场景比较
    申明一个函数指针,并且该函数的返回值也是一个函数指针 示例代码
    XML操作大全
    如何让页面延迟显示?
    Ajax实现不刷屏的前提下实现页面定时刷新
    我喜欢的笑话 呵呵
    Atlas UpdatePanel使用技巧以及常见问题
    asp.net 弹出窗体
    C# asp.net操作文件
  • 原文地址:https://www.cnblogs.com/jhin-wxy/p/9448907.html
Copyright © 2011-2022 走看看