美文网首页
Dive into Python Chapter 2&3

Dive into Python Chapter 2&3

作者: Jacky_bcd9 | 来源:发表于2017-06-15 19:57 被阅读0次

    Chapter 2. 第一个程序

    odbchelper.py

    def buildConnecitonString(params):
      """Build a connection string from a dictionary of parameters.
    
      Returns string."""
      return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
    
    if __name__ == '__main__':
      myParams = {"server":"master", \
          "database":"master"}
      print(buildConnecitonString(myParams))
    

    输出结果

    server=mpilgrim;uid=sa;database=master;pwd=secret
    

    文档化 doc string

    三重引号"""包含的部分,必须是函数定义的第一个内容,可通过_doc_属性访问。

    模块导入的搜索路径

    >>> import sys
    >>> sys.path
    >>> sys.path.append('/my/new/path')
    

    fibonacci函数

    def fib(n):
      print('n=', n)
      if (n>1):
        return n*fib(n-1)
      else:
        print('end of the line')
        return 1
    

    测试模块

    if __name__ == "__main__"
    

    Chapter 3. 内置数据类型

    • Dictionary{}
    • List[]
    • Tuple()

    3.1 Dictionary({})

    定义

    d = {"server":"mpilgrim", "database":"master"}
    

    注意

    • Dictionary是无序的
    • Key大小写敏感

    添加元素

    d['udi']="abc"
    

    删除元素

    del d['server']
    d.clear()
    

    3.2 List([])

    定义

    li = ["a","b","c"]
    

    负的索引

    非空list最后一个元素总是li[-1]

    分片slice

    通过指定2个索引得到list子集,注意不包括第二个索引指向的元素。
    >>> li[1:3]
    >>> li[1:-1]
    >>> li[0:3]

    slice简写

    >>> li[:3]
    >>> li[3:]
    >>> li[:]
    

    向list增加元素

    >>> li.append("new")
    >>> li.insert(2, "new")
    >>> li.extend(["one","two"])
    

    注意extendappend的区别
    >>> li = ['a','b','c']
    >>> li.extend(['d','e','f'])
    ['a','b','c','d','e','f']
    >>> li.append(['d','e','f'])
    ['a','b','c',['d','e','f']]

    检索list

    >>> list.index('c')
    

    删除元素

    >>> list.remove('c')
    

    list运算符

    >>> li = ['a','b']
    >>> li += ['c','d']
      ['a','b','c','d']
    >>> li = [1,2] * 3
      [1,2,1,2,1,2]
    

    3.3 Tuple

    定义

    定义Tuple与List类似,只是元素集用()包围,而不是[]。

    Tuple没有方法

    不能进行append, remove, index操作。

    Tuple可以用作Dictionary的Key

    3.4 变量

    一次赋多值

    >>> v = ('a','b','c')
    >>> (x,y,z) = v
    

    连续值赋值

    >>> range(7)
    >>> (Mon, Tue, Wed, Thu, Fri, Sat, Sun) = range(7)
    

    格式化字符串

    >>> userCount = 6
    >>> print('Users connected: ' + userCount)
    Traceback (innermost last):
    File "<interactive input>", line 1, in ?
    TypeError: cannot concatenate 'str' and 'int' objects
    

    数值的格式化

    >>> print("Today's price: %2f" % 50.4625)
    50.46
    

    3.6 映射list

    Python的强大特性之一是对List的解析。
    >>> li = [1,9,8,4]
    >>> [elem*2 for elem in li]
    [2,18,16,8]

    Dictionary的keys, values, items函数

    >>> params = {"srever":"mpilgrim", "database":"master"}
    >>> params.keys()
    ['server','database']
    >>> params.values()
    ['mpilgrim','master']
    >>> params.items()
    [('server','mpilgrim'),('database','master')]
    

    注意元素在Dictionary中是无序的,所以params.keys()不是按dictionary定义的顺序输出。

    List解析

    >>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
    >>> params.items()
    [('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]
    >>> [k for k, v in params.items()]
    ['server', 'uid', 'database', 'pwd']
    >>> [v for k, v in parmas.items()]
    ['mpilgrim', 'sa', 'master', 'secret']
    >>> ["%s=%s" % (k, v) for k, v in params.items()]
    ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
    

    连接list

    >>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
    

    注意join只能用于元素是字符串的list;它不进行强制类型转换;连接存在非字符串元素的list时会引发异常。

    分割字符串

    >>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
    >>> s = ";".join(li)
    >>> s
    'server=mpilgrim;uid=sa;database=master;pwd=secret
    >>> s.split(";")
    ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
    >>> s.split(";",1)
    ['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
    

    split接受第二个参数,它是要分割的次数

    Tip: 用split搜索

    anystring.split(delimiter, 1) 是一个有用的技术,在您想要搜索一个子串,然后分别处理字符前半部分 (即 list 中第一个元素) 和后半部分 (即 list 中第二个元素)时,使用这个技术。

    相关文章

      网友评论

          本文标题:Dive into Python Chapter 2&3

          本文链接:https://www.haomeiwen.com/subject/ynheqxtx.html