• 学习笔记(1?)


    1.显示类型(2012-07-09)

    1 test=(1,2,3,4)
    2 print str(type(test))

     2.Python的文件类型分为3种,即源代码、字节代码和优化代码。这些都可以直接运行,不需要进行编译或连接。

    源代码以.py为扩展名,由python来负责解释;源文件经过编译后生成扩展名为.pyc的文件,即编译过的字节文件。这种文件不能使用文本编辑器修改。pyc文件是和平台无关的,可以在大部分操作系统上运行。经过优化的源文件会以.pyo为后缀,即优化代码。它也不能直接用文本编辑器修改.

    3.python中的变量不需要声明,变量的赋值操作就是变量声明和定义的过程。

    4.在函数之外定义的变量都可以称为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。全局变量建议在文件的开头定义,也可以把全局变量放到一个专门的文件中,然后通过import来引用.

    5.python内部没有普通类型,任何类型都是对象。

    6.python不支持自增运算符和自减运算符。例如i++/i–是错误的,但i+=1是可以的。

    7.python程序由包(package)、模块(module)和函数组成。包是由一系列模块组成的集合。模块是处理某一类问题的函数和类的集合。包就是一个完成特定任务的工具箱。包必须含有一个__init__.py文件,它用于标识当前文件夹是一个包。模块把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块。模块由代码、函数和类组成。导入模块使用import语句。

    8.python用class保留字来定义一个类,类名的首字符要大写。当程序员需要创建的类型不能用简单类型来表示时,就需要定义类,然后利用定义的类创建对象。

    9.类的方法也分为公有方法和私有方法。私有函数不能被该类之外的函数调用,私有的方法也不能被外部的类或函数调用。

    10.python使用函数”staticmethod()“或”@ staticmethod“指令的方法把普通的函数转换为静态方法。静态方法相当于全局函数。

    11.类和对象的关系
    类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

    12.ascii

    print ord('a')

    13.显示目标的编码方式

    import urllib
    rawdata = urllib.urlopen('http://www.google.cn/').read()
    import chardet
    print chardet.detect(rawdata)

    14.
    在python中,方法定义在类中,但只能被实例所调用。调用一个方法的最终途径是:(1)定义类(2)创建一个类(3)用这个实例调用方法。

    15.

    在一个函数中对参数名赋值不影响调用者。
    
    >>> a=1
    >>> def test(a):
    ...     a=a+1
    ...     print a
    ...
    >>> test(a)
    2
    >>> a
    1             # a值不变
    
    在一个函数中改变一个可变的对象参数会影响调用者。
    
    >>> a=1
    >>> b=[1,2]
    >>> def test(a,b):
    ...     a=5
    ...     b[0]=4
    ...     print a,b
    ...
    >>> test(a,b)
    5 [4, 2]
    >>> a
    1
    >>> b
    [4, 2]    # b值已被更改

    16.>>> int(12.0)  12 

    int()函数可以将一个数转化为整数

    >>> int('12',16)  18

    这里有两个地方要注意:1)12要以字符串的形式进行输入,如果是带参数base的话

    这里并不是将12转换为16进制的数,而是说12就是一个16进制的数,int()函数将其用十进制数表示


    17.在程序运行中设置延迟,是程序运行变慢

    import time

    time.sleep(2)

    暂停2秒再运行。

    18.首先判断是否已存在这样的记录:

     1 select count * from Table where 条件
     2     
     3     if(count >0)
     4     {
     5          数据相加;
     6          //数据库语句来实现
     7     }
     8     else
     9     {
    10         修改;
    11     }

    19.

    1 a = 'ab'
    2 b = ('a', 'c')
    3 print [x for x in a if x not in b]

     20.正则匹配,忽略大小写,两种写法

    1 a = 'aA'
    2 p = re.compile('a', re.IGNORECASE)
    3 print p.findall(a)
    4 print re.findall(r'a', a, re.IGNORECASE)

     21.编写的另一种格式。(捕捉异常)

    1 test = 'a'
    2 if not isinstance(test, int): raise TypeError, "Not type of int"

    22.条件判断,选择赋值

    a if b else c ; 如果b为真,则返回a,否则返回c

    1 b = 'b'
    2 a = 0 if b == 'a' else 1
    3 print a

     23.repr()函数

    str()一般是将数值转成字符串。
    repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。

    24.字符串的title方法,将字符串转换为标题,也就是所有单词的首字母大写,而其他字母小写。string = "that's all folks.";string.title()=="That'S All Folks."

    25.strip方法返回去除两侧(不包括内部)空格的字符串。

    26.Python的字典的items(), keys(), values()都返回一个list

    1     >>> dict = { 1 : 2, 'a' : 'b', 'hello' : 'world' }  
    2     >>> dict.values()  
    3     ['b', 2, 'world']  
    4     >>> dict.keys()  
    5     ['a', 1, 'hello']  
    6     >>> dict.items()  
    7     [('a', 'b'), (1, 2), ('hello', 'world')]  
    8     >>>   

    27.使用dict的小Demo:

     1 people = {
     2     'Alice':{
     3         'phone':1234,
     4         'address':'beijing'
     5            },
     6     'Peter':{
     7         'phone':4567,
     8         'address':'shanghai'
     9             },
    10     'Micheal':{
    11         'phone':9012,
    12         'address':'hangzhou'  
    13              }
    14           }
    15 name = raw_input("please input the name : \n")
    16 if(people.has_key(name)==False):
    17     print "Not exist"
    18 else:
    19     profile = people[name]
    20     print profile
    21     #use dict to format the string
    22     print "Phone is : %(phone)s \nAddress is : %(address)s" % profile 

    结果:
    please input the name :
    Alice
    {'phone': 1234, 'address': 'beijing'}
    Phone is : 1234
    Address is : beijing

    28.模块的导入:

    1    import somemodule
    2    from somemodule import somefunction
    3    from somemodule import somefunction, anthorfunction, yetanthorfunction
    4    from somemodule import *
    5    使用别名,避免冲突:import math as foobar

    29.遍历字典

     1 d = {'x':1,'y':2,'z':3}
     2 #Method1
     3 for key in d:
     4     print key ,'----->',d[key]
     5 #Method2
     6 for key in d.keys():
     7     print key ,'----->',d[key]
     8 #Method3
     9 for (key , value) in d.items() :
    10     print key , '----->' , value 
    >>>y -----> 2
      x -----> 1
      z -----> 3

    30.zip(), dict()

    zip函数可以用来进行并行迭代,可以将多个序列"压缩"在一起,然后返回一个元组的列表

     1 names = ['Peter','Rich','Tom']
     2 ages = [20,23,22]
     3 d = dict(zip(names,ages))
     4 print zip(names,ages)
     5 print dict(zip(names,ages))
     6 for (name,age) in zip(names,ages):
     7     print name ,'----', age
     8 print d['Peter'] 
     9 
    10 >>>[('Peter', 20), ('Rich', 23), ('Tom', 22)]
    11 >>>{'Peter': 20, 'Rich': 23, 'Tom': 22}
    12 >>>Peter ---- 20
    13 >>>Rich ---- 23
    14 >>>Tom ---- 22
    15 >>>20

    31.del用于list列表操作,删除一个或者连续几个元素。示例程序如下:

     1 >>> a = [-1, 3, 'aa', 85] # 定义一个list
     2 >>> a
     3 [-1, 3, 'aa', 85]
     4 >>> del a[0] # 删除第0个元素
     5 >>> a
     6 [3, 'aa', 85]
     7 >>> del a[2:4] # 删除从第2个元素开始,到第4个为止的元素。包括头不包括尾
     8 >>> a
     9 [3, 'aa']
    10 >>> del a # 删除整个list
    11 >>> a
    12 Traceback (most recent call last):
    13   File "<stdin>", line 1, in <module>
    14 NameError: name 'a' is not defined
    15 >>>

    32.使用del时候,删除的只是名称,而不是列表本身值,事实上,在python中是没有办法删除值的,系统会自动进行垃圾回收。

    33.求斐波那契数列

    1 def fibs(num):
    2     'a function document'
    3     result = [1,1]
    4     for i in range(num-2):
    5         result.append(result[-2]+result[-1])
    6     return result 

    34.抽象函数(参数可以缺省,可以通过*p传递任意数量的参数,传递的是元组;通过**p传递任意数量的参数,传递的是字典)

     1 def a(*p):
     2     print p
     3 def b(**p):
     4     print p
     5 a(1,2,3)
     6 b(a='1',b='2',c='3')
     7 """
     8 result:
     9 (1, 2, 3)
    10 {'a': '1', 'c': '3', 'b': '2'}
    11 """ 

     35.string模块的join方法是split方法的逆方法。EG:seq = ['1','2','3','4','5'];sep = ',';s = sep.join(seq)

     36.抛出异常

    1 if not imethod in ("POST", "GET", "ALL"):
    2     raise ValueError, "METHOD_NOT_SUPPORT [met='%s']" % method

    37.捕捉异常,显示错误日志

    1 except Exception, ex:
    2      logger.error("GET_NEWS_HEALTH_FAIL [exp='%s']", str(ex))
    3 >>>ex : WriteException: Cannot write in JSON: datetime.datetime(2012, 1, 5, 15, 53)

     38.共享引用和相等(python学习手册第四版P163)

     1 >>>L = [1, 2, 3]
     2 >>>M = L                                   #M and L reference the same object
     3 >>>L == M                                 #Same value
     4 True
     5 >>>L is M                                   #Same object
     6 True
     7 
     8 >>>M = [1, 2, 3]
     9 >>>L == M                                 #Same values
    10 True
    11 >>>L is M                                   #Different objects
    12 False

     39.函数缩写全称

    ord()--->order

    chr()--->char

    repr()--->representation

    pprint()--->pretty printer

     40.s.startswith()

    做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束。Python为此提供了两个函数:
    S.startswith(prefix[, start[, end]]) -> bool
    如果字符串S以prefix开始,返回True,否则返回False。start和end是两个可以缺省的参数。分别是开始比较的位置和结束比较的位置。这个函数也可以写成S[start:end].startswith(prefix)。
    S.endswith(suffix[, start[, end]]) -> bool
    如果字符串S以suffix结束,返回True,否者返回False。与startswith类似,这个函数也可以写成S[start:end].endswith(suffix)。start和end仍然是从左数起。
    做个实例:

    1 >>> “fish”.startswith(”fi”)
    2 True
    3 >>> “fish”.startswith(”fi”,1)
    4 False
    5 >>> “fish”.endswith(”sh”)
    6 True
    7 >>> “fish”.endswith(”sh”,3)
    8 False

      Python的这两个函数有个特别的地方——它的prefix和suffix参数不仅可以是字符串,还都可以是一个元组。只要其中一个成立,就返回True,也就是一种“或”的关系。比如:

    1 if filename.endswith((’.gif’, ‘.jpg’, ‘.tiff’)):
    2   print “%s是一个图片文件”%filename

    上面两行代码根据文件扩展名是否是“gif”、“jpg”或“tiff”之一来决定文件是不是图片文件。

     41.eval

    eval(str [,globals [,locals ]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。

     42.什么是原语,原语操作与原子操作

    内核或微核提供核外调用的过程或函数称为原语(primitive)。
    原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断。
    在多进程(线程)的操作系统中不能被其它进程(线程)打断的操作就叫原子操作,文件的原子操作是指操作文件时的不能被打断的操作。
    原子还有一层意思,当该次操作不能完成的时候,必须回到操作之前的状态,原子操作不可拆分。
    所有原子操作是同步的,而且不可被外部中断(内中断可以,不过一般是致命错误处理)。
    也就是说,原子操作是中断安全的

  • 相关阅读:
    交互题
    线段树
    最小生成树
    拓扑排序
    欧拉回路
    RMQ问题
    dfs序与求子树子节点(染了色)的个数
    dp题
    树状数组与离散化
    没做完的题
  • 原文地址:https://www.cnblogs.com/lvxiuquan/p/2582651.html
Copyright © 2020-2023  润新知