zoukankan      html  css  js  c++  java
  • python基础

    核心编程的笔记:

    print 'hello world!'

    print "%s is hello world %d" % ("Python",1)

    logfile = open('/tmp/mylog.txt','a')

    print >> logfile, 'Fatal error: invalid input!'

    logfile.close()

    raw_input()函数

    操作符:+ - *  /  //(地板除)  % **(幂运算)

    比较操作符:<   <=  >  >=  ==  !=  <>(不推荐)

    逻辑操作符:and or  not

    基本数字类型: int  long:10000000000L  bool  float:3.14159  complex:6.2 + 1.5j

    for 和 range()

    列表解析:

    [x ** 2 for x in range(4)]

    >>>0 1 4 9

    文件内建函数:open(filename ,access_mode=<?>),file()

    access_mode参数选择:r,r+,w,w+,a,a+,rb,r+b,wb,wb+,ab,ab+

    r 打开只读文件,该文件必须存在。
    r+ 打开可读写的文件,该文件必须存在。
    w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
    a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

    异常:

    try:

      代码块

    except  错误类型,e:

      print e

    函数:

    def name(参数):

      代码块

    类:

    class name():

      ver = 1

      def __init__(self,n = 'a'):

        self.name = n

      def haha(self):

        return 'haha'

    self:必须,指向类实例.

    ver:静态属性

    __init__:构造方法,类实例创建完成后执行,可以完成初始化工作。

    haha:自定义方法.

    模块

    使用函数:

    int(obj):转换成int

    len(obj):对象长度

    type(obj):返回类型(元类)

    str(obj):对人友好的转换成string

    help(obj):文档

    dir(obj):有obj:obj属性,无obj:全局变量名字

    #!/usr/bin/env python   为了可以直接用名字运行文件。可加这句话

    特殊符号:#  (继续,换行代码)   ;(把多个语句写在同一行) 

    理解变量赋值:

    python变量赋值是地址赋值

    x = 1
    y = (x = x+1)

    出错,赋值语句不是合法表达式,没有返回值,c语言中完全ok,然而python不行

    y = x = x+1

    完全没问题.

    'hello'*2

    'hellohello'

    += -= *= /=  %= **=

    <<=   >>=  &=  ^=  |=

    多元赋值:

    x=y=z=1

    x,y,z = 1, 1, 1

    下划线:

    _xxx:私有

    __xx__:系统的

    #/usr/bin/env python       #开始
    
    “test module”   #模块文档
    
    
    import sys    #模块导入
    
    debug = Ture  #全局变量
    
    class A(object):   #
        pass
    
    def b():   #函数
        pass
           
    if __main__ == '__main__'
            #主程序

    引用计数:

    x = 1

    1对象被引用。

    y = x

    1对象又被引用

    x = 2

    1对象引用减少

    y = x

    1对象引用减少

    1对象被回收。

    del 删除引用。

    以上是python的垃圾回收

    os.lineseq:根据平台不同得到不同结束符

    python对象:三个特征,可更改或不可更改。

    1。唯一标示符,身份证

    2。类型

    3.值

    标准类型:整型,布尔型,长整,浮点,复数,字符串,列表list,元祖tuple,dictionary

    Null,文件,集合,函数,模块,类。

    内部类型:代码对象(源代码),帧对象(不懂),跟踪记录,切片,省略,Xrange

    对象比较:

    字符串按照序列值比较

    3<4<5

    相当于

    3<4 and 4<5

    a is b       :       对象身份比较,地址是否相同

    a == b     :       对象值比较,值是否相同

    id(a)     :     获得身份证

    有时候能用对象比较就不用值比较了,这样可能更快更好

    *对于一些对象,python会缓存

    例如:a =1

    b =1

    可能一看会以为指向不同的1

    但是python,会把这种常见的1缓存,故你用id(a),id(b)会获得相同的地址,这种机制不稳定。实际没啥用。

    内建函数:

    cmp(a,b)

    比较a,b大小,小返回负数,大正数,等于  0

    str()和repr()(``操作符)

    str面向玩家的友好转换。

    repr()面向机器的友好转换。``(应该抛弃)和repr等价

    type()和isinstance(a,b)

    type过于复杂,返回一个类型的type类型类

    type.IntType 可以得到一个相同的int 的type对象,这意味着,所有int类型会公用这一个对象,既然如此,尽量减少函数调用可以提高效率

    同时,用 type(a) is type.IntType比较效率也会比,type(a) == type.IntType更高。

    对这些类型类做一个总结就是:

    标准类型类:基本,内建,数据(数据存储),对象(对数据和功能的高度抽象),原始(颗粒),类型(是一种类型)

    按存储模型分类:原子类型(数值,字符串),容器类型(列表,元祖,字典)

    按更新类型分类:可变(列表,字典)不可变(数字,字符串,元祖)

    按访问类型分类:直接访问(数值)顺序访问(字符串,列表,元祖)映射访问(字典)

    这样分类可以帮助理解,不可变理解是,里面对象占用了地址,他是不会离开的。直到被回收,所以一般我们觉得我们赋值,好像改变了,实际不过是变量换了一个地址罢了。

    类型转换:

    复数,浮点,长整,整。(这个顺序是默认类型转换,系统会把右边的转换成左边的)

    地板除://   把小数去掉

    import __future__ import division会实现真正的除法,默认是传统的除法。

     位操作符:~ (非)  <<(左移) >>(右移)  &  |   ^(异或)

    五个内建数值运算函数:

    abs():求绝对值(复数取模)

    coerce(a,b):类型转换函数,返回一个元组,转换规则按默认规则

    divmod(a,b);返回地板除和取余的结果,元组

    pow(a,b):和a**b相同,若有第三个参数,则a**b%c

    round():四舍五入

    整型特有的函数:

    hex():转十六进制

    oct():转八进制

    chr():将一个ascii码转成字符

    ord():将一个ascii或unicode字符转成对应数值

    unichr():将Unicode字符转成对应值

    序列:字符串,列表,元祖

    序列关系操作符:in , not in

    内建类型转换函数:

    list():必须是可迭代对象,转成一个列表。

    tuple():变成元祖66

    str(obj):对象-》字符串,对用户友好。

    unicode(obj):对象-》unicode字符串。

    这里转换的函数传进的是一个地址,而非一个拷贝对象,前者为浅拷贝,后者为深拷贝,并且返回的是一个新的对象。

     内建操作函数:

    enumerate():必须是可迭代对象,返回一个index和value的元祖。例如((0,1)(1,'hello'))

    len(seq):返回seq的长

    max()和min()

    revesed()

    sort()

    sum()

    zip():

    字符串:

    单引双引皆ok

    如前面所说,改变字符串会更新一整个字符串。

    从性能角度来说,是不支持while i<len(a):这样的写法,原因是在循环中调用函数,len的实现会在每一次循环都执行一次,你可以想象,这是一个数据结构的实现,很大程度上影响了速度。

    +号也是。

    字符串格式化操作符:

    %+(c,r,s,d,i,u,o,x,e,f,g,%)辅助操作符:*,-,+,<sp>,#,0,%,(var),m.n

    原始操作符:r/R

    在字符串前面加,将会忽略所有以上的格式化符号。

    string内建函数:

    capitalize():第一个字符大写

    swapcase():转换大小写

    title():标题化,所有字符开头大写

    center(width):居中,空格填充

    ljust(width):左对齐,空格填充

    rjust(width):右对齐,空格填充

    count(str,beg=0,end=len(str)):beg-end中str出现的次数

    decode(encoding='utf-8') 和 encode(encoding='utf-8'):编码解码

    startswith(obj,beg=0,end=len(str)):检查beg-end里面是否以obj开头

    endswith(同上):同上相反

    expandtabs(tab=8):默认是8,把tab换成空格

    rfind(),find(str,beg=0,end=len)和 rindex(),index(...):index没找到会报错.

    isalnum(),是否数字和字母,bool

    isalpha(),是否纯字母字符,bool

    isdecimal(),是纯否十进制数字。

    isdigit(),是否纯数字

    islower(),字母部分是否都小写

    isupper(),大写

    isnumeric(),只包含数字字符。

    isspace(),只有空格

    istitle(),是否标题化

    join():连接(推荐)

    lstrip(),strip(),rstrip(),去粗空格

    replace(str1,str2,num=string,count(str1)):用str2替换str1,num次。

    partition(str),rpartition(),:分成三部分,中间部分是shr。rpartition反过来切

    split(str="",num=string.count(str)):以str分割,str出现的次数

    splitlines():行分割

    translate(str,de='')

    zfill()右对齐,零填充。

    列表:

    append()

    pop()

    extend(),推荐

    index()

    count()

    insert()

    remove(obj)

    reverse()

    sort():不返回,在原基础上做

    reversed():返回一个新对象。

    sorted()

    sort用的是归并排序算法。

  • 相关阅读:
    前端网络安全——其他安全问题
    前端网络安全——密码安全
    前端网络安全——接入层注入
    前端网络安全——点击劫持
    mac重装系统后安装列表
    manjaro踩坑记录
    JavaScript学习过程中遇到的一些坑
    JavaScript学习
    [解决方法] 如何在没有屏幕的情况下训练一些需要显示的程序
    Python中*号的作用详解
  • 原文地址:https://www.cnblogs.com/wuweixin/p/4924520.html
Copyright © 2011-2022 走看看