zoukankan      html  css  js  c++  java
  • Python笔记

    1.     数据类型

    Python是动态语言,运行期确定类型,但是是强类型语言,类型确定后不可改变

    不支持行内赋值

     

    1.1 List

    list = [“a”, “b”, “c”] #help(list)各元素的数据类型可以不同

    list.append(1) #追加一个元素

    list.remove(“a”) #移除元素值为”a”的元素

    list[0     ]     #”a”

    list[-1]   # “c”

    lsit[0:-1]      #[“a”, “b”]

    list[:1]   #[“a”]

    list[1:]   #[ “b”, “c”]

    del list[0] #删除元素

    list.extend(list2)      #追加一个list

    list2 = list    #列表赋值类似指针

    del list[0]

    list2      #[ “b”, “c”]

    但是如果:

    list2 = list[:] #复制

    del list[0]

    list2  #[ “b”, “c”]

    list的解析

    for elem in list:

           #代码

     

    1.2 Dictionary

    dictionary = {“key1”:”value1”, “key2”:”value2”}

    key不可变,value可变,类型也可变

    del dictionary[“key1”]    #删除元素

    dictionary.items()     #[(“key1”,”value1”),( “key2”,”value2”)]

    dictionary的解析

    (k,v)for k, v in dictionary.items()

     

    1.3 Truple

    Truple = (1,2,3)

    元素不能修改,但是读取速度快,可以作为dictionarykey(因为不可变,list不可),可以和list相互转换

     

    # 注释

    print #打印,逗号隔开 例如“%s = %s”%(k,v)  %c相同

    data = input(“说明”) #输入

    ** #幂运算符

    Sleep(seconds)

     

    2语法

    if表达式:

           #代码

    elif 表达式:

           #代码

    else:

           #代码

     

    while 表达式:

           #代码

     

    for in:

           #代码

    for num in range(0,100): #range [)  

    print num

    for char in [“a”, “b”]:

           print char

     

    过滤列表 for in if

     

    and

    or

    and or: 有点类似c中的bool?a:b

     

    3.函数

    def function(paramter): #parameters以逗号隔开, 可以使用默认值,规则同C

    “””doc string “”” #可以不用给出,用来说明函数可以做什么,键入函数名时的提示工具

           #代码 return 可返回一个值

    def func(a, b=0, c=1):

           #代码

    可以有如下调用调用

    func(0)

    func(0, 1)

    func(0, c=2)

    func(c=2, a = 1)

     

    函数局部变量和全局变量

    函数中的局部变量会屏蔽全局变量, 使用global

    age = 0

    def setAge():

           global a

           a = 2

    locals 返回列表, 元素为dict, 值为: 局部变量明 =

     

    type函数:返回变量类型 type1 #<type ‘int’>

     

    dir函数: 返回对象的属性和方法列表

     

    callable函数: callable(x) 如果x时可调用的(方法),则返回True

     

    getattr函数: getattr(object, property)返回object的方法或属性的引用.

     

    lambda函数: 内联单行函数

    例如 lambda x: x*2 #参数为x, 返回x*2

     

    str(obj) 返回obj对象的字符串,如果x为空,则返回None”

    4.类

    4.1 类定义

    class classname(superclass): #继承

        classdata = {} #一个类属性, 它在创建任何类实例之前就有效了.相当于java/c++static data

        def _init__(self, parameters): #构造

            self.data = {} #数据属性,像局部变量一样,当你首次赋给它值时产生.

            superclass.__inti__(self)  #要调用父类的函数

        def __del__(self):

            superclass.__del__(self) #析构

     

    obj = classname() #定义对象

    如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的;其它所有的都是公有的。

    所有的专用方法 ( __setitem__) 和内置属性 ( __doc__) 遵守一个标准的命名习惯:开始和结束都有两个下划线. 它是公有的.

    严格地说,私有方法在它们的类外是可以访问的,只是不容易处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的.你可以通过 _MP3FileInfo__parse 名字来使用 MP3FileInfo 类的 __parse 方法.

    4.2 userdict封装类

    是一个有着像字典一样的行为方式的类.

    一些方法:

    clear 方法删除它的所有关键字和关键字相应的值.

    update 方法是一个字典复制器:它把一个字典中的键和值全部拷贝到另一个字典.

    __setitem__ 设置关键字触发__setitem__ 方法

    __getitem__ 获取关键字触发__ getitem __ 方法

    __repr__ 是一个专用的方法,在当调用 repr(instance) 时被调用。repr 函数是一个内置函数,它返回一个对象的字符串表示。它可以用在任何对象上.

    __cmp__ 在比较类实例时被调用。通常,你可以通过使用== 比较任意两个Python对象

    __len__ 在调用 len(instance) 时被调用。

    __delitem__ 在调用 del instance[key] 时调用

    5.异常

    KeyError  使用不存在的字典关键字

    ValueError 搜索列表中不存在的值

    AttributeError 调用不存在的方法

    NameError 引用不存在的变量

    TypeError 未强制转换就混用数据类型

    IOError 文件打开异常

    ImportError 模块导入异常

     

    try

    except:

    #处理之后将正常继续,从 try...except 块的下一行代码/finally开始.

    finally:

    raise Exception(“description”) #抛出异常

    6.文件读写

    f = open(filename, mode, bufferparameter)  #可以接收三个参数:文件名, 模式(r w a b)和缓冲区参数(可选)

    f.tell()  #打开文件中的当前位置

    f.seek(-128, 2)  #0表示移动到一个绝对位置0 (从文件起始处算起)1 表示移到一个相对位置 (从当前位置算起),还有 2 表示相对于文件尾的位置。因为我们搜索的

    tagData = f.read(128)     #readline读一行 readlines读全文到一个列表,每一行为列表元素

    f.write('line 2')

    f.close()

    f.closed       #False or True

    7.模块Module

    .py结尾, 每一个模块都是对象, python的任何东西都是对象

    __name__ == “__main__”模块被运行,否则模块被import

    import othermodule       #模块导入,需要使用othermodule. 调用othermodule中的属性或方法

    from …import    othermodule      #将其他模块中的属性导入到自己模块

    7.1 OS模块

    >>> os.path.join("c:\\music\\ap\\", "mahadeva.mp3") #把一个或多个部分路径名连接成一个路径名.

    "c:\\music\\ap\\mahadeva.mp3"

    >>> os.path.expanduser("~") #将对使用 ~ 来表示当前用户根目录的路径名进行扩展

    'c:\\Documents and Settings\\mpilgrim\\My Documents

    >>> (filepath, filename) = os.path.split("c:\\music\\ap\\mahadeva.mp3") #分割路径

    'c:\\music\\ap''mahadeva.mp3'

    >>> (shortname, extension) = os.path.splitext(filename) #分割文件名

    'mahadeva''‘.mp3'

    >>> os.listdir("d:\\") #返回目录的内容的 list

    ['$RECYCLE.BIN', 'CCShare', 'Info.csv', 'Info.xls', 'Program Files', 'share', 'sina.html', 'SoftWare', 'System Volume Information', 'Users', 'Work']

    os.path.isdir(dirpath)

    os.path.isfile(filepath)

    os.path.normcase(f) #根据操作系统的缺省值对大小写进行标准化处理

    os.system(command) #执行系统命令

    os.sep #会根据你的操作系统给出目录分隔符

    7.2 Time模块

    time.strftime('%Y%m%d%H%M%S') #得到当前时间

    8.正则表达式

    所有和正则表达式相关的功能都包含在 re 模块中.

    8.1 紧凑正则表达式

    string$         string 结尾

    ^string        string开头

     

    r\bstring\b              \b为边界,string为单独出现的字符串 r表示字符串中所有字符都不转义,否则必须为\\bstring\\b

     

    string?string?string?      string是可选匹配,最多可以匹配三次

     

    (A|B|C) 这个语法的含义是“精确匹配AB 或者 C 其中的一个

    例如: '^M?M?M?(CM|CD|D?C?C?C?)(XC|XL|L?X?X?X?)(IX|IV|V?I?I?I?)$'

     

    {n,m}

    例如: '^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$'

     

    \d{3}           \d:(09)任何一个数字,{3}精确匹配三个数字

     

    r'^(\d{3})\D+(\d{3})\D+(\d{4})\D+(\d+)$'       \D 匹配任意字符,除了数字位,+ 表示1个或者多个,*表示0个或者多个

     

    >>> phonePattern = re.compile(r'^(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$') (1)

    >>> phonePattern.search('80055512121234').groups() (2) ('800', '555', '1212', '1234')

    8.2 松散正则表达式

    pattern = """

    ^ # beginning of string

    M{0,3} # thousands - 0 to 3 M's

    (CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),

    # or 500-800 (D, followed by 0 to 3 C's)

    (XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),

    # or 50-80 (L, followed by 0 to 3 X's)

    (IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),

    # or 5-8 (V, followed by 0 to 3 I's)

    $ # end of string

    """

    忽略注释,换行,空白,回车,制表符. 如果正则表达式中包含上述字符,需要在前面加上\进行转义.当使用松散正则表达式时,最重要的一件事情就是:必须传递一个额外的参数 re.VERBOSE,该参数是定义在 re 模块中的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。正如你看到的,这个模式中,有很多

    re.search(pattern, 'M', re.VERBOSE)

    8.3 re模块方法

    re.sub(regex, newstr, str) str中用newstring替代regex

    re. search (regex, str)            str中寻找regex

     

    9HTML处理

    9.1 SGMLParser

     1 from sgmllib import SGMLParser
    2
    3 class BaseHTMLProcessor(SGMLParser):
    4
    5 def reset(self):
    6
    7 SGMLParser.reset(self)
    8
    9 def handle_data(self, text):
    10
    11 # called for every block of text in HTML source
    12
    13 def start_pre(self, attrs):
    14
    15 # called for every <pre> tag in HTML source
    16
    17 def end_pre(self):
    18
    19 # called for every </pre> tag in HTML source
    20
    21
    22
    23 from sgmllib import SGMLParser
    24
    25 class URLLister(SGMLParser):
    26
    27 def reset(self):
    28
    29 SGMLParser.reset(self)
    30
    31 self.urls = []
    32
    33 def start_a(self, attrs):
    34
    35 href = [v for k, v in attrs if k=='href']
    36
    37 if href:
    38
    39 self.urls.extend(href)



    9.2 urllib

    1 >>> import urllib
    2
    3 >>> sock = urllib.urlopen("http://diveintopython.org/")
    4
    5 >>> htmlSource = sock.read()
    6
    7 >>> sock.close()
    8
    9 >>> print htmlSource


  • 相关阅读:
    小程序那些坑
    2018-5-31 项目总结
    Android AndroidManifest学习笔记
    android 快捷键
    android的liveview装载数据
    android xml产生和解析
    SerializableMaplist传递数据
    android hander 线程用法
    DataGridView实现分页
    DataGridView添加另外一个控件。
  • 原文地址:https://www.cnblogs.com/zengyou/p/2195619.html
Copyright © 2011-2022 走看看