zoukankan      html  css  js  c++  java
  • Python Fundamental for Django

    Strings
    >>> s = 'django is cool'
    >>> words = s.split()
    >>> words
    ['django', 'is', 'cool']
    >>> ' '.join(words)
    'django is cool'
    >>> s.count('o')
    3
    >>> s.find('go')
    4
    >>> s.replace('django', 'python')
    'python is cool'
    

    一些常用的string函数:

    string methoddescription
    count Number of occurrences of substring in string
    find Search for substring [also see index, rfind, rindex]
    join Merge substrings into single delimited string
    replace Search and replace (sub)string
    split Split delimited string into substrings [also see splitlines]
    startswith Does string start with substring [also see endswith]
    strip Remove leading and trailing whitespace [also see rstrip, lstrip]
    title Title-case string [also see capitalize, swapcase]
    upper UPPERCASE string [also see lower]
    isupper Is string all UPPERCASE? [also see islower, and so forth]

    格式化输出:

    >>> '%s is number %d' % ('python', 1)
    'python is number 1'
    >>> hi = '''hello
    baby'''
    >>> hi
    'hello
    baby'
    >>> print hi
    hello
    
    baby
    
    Tuples

    tuple里面的元素不能被修改,这与它本身的实现机制有关,在传递参数的时候如果不希望参数被修改也是一种不错的选择。

    >>> a = ('one', 'two')
    >>> a[0]
    'one'
    >>> c = ('only',)
    >>> c[0]
    'only'
    >>> d = 'only',
    >>> d[0]
    'only'
    

    这里需要注意的是声明一个tuple的时候关键是逗号,如果没有下面的例子就只是一个string,注意到这个非常重要,因为很多django的数据类型用的都是tuple:

    >>> b = ('only')
    >>> b[0]
    'o'
    
     
    Dictionaries

    字典是一种有点像哈希表的列表,里面的元素有key和value两个属性。字典的元素可以修改,无序,且大小可以变化。如:

    >>> book = {'title':'django', 'year':2008}
    >>> 'title' in book
    True
    >>> book.get('pub', 'N/A')
    'N/A'
    >>> book['pub'] = 'Addision'
    >>> book.get('pub', 'N/A')
    'Addision'
    >>> for key in book:
    ...     print key, ':', book[key]
    ...
    year : 2008
    title : django
    pub : Addision
    

    一些常用函数:

    Dictionary MethodDescription 
    keys Keys (also see iterkeys)  
    values Values (also see itervalues)  
    items Key-value pairs (also see iteritems)  
    get Get value given key else default [also see setdefault, fromkeys]  
    pop Remove key from dict and return value [also see clear, popitem]  
    update Update dict with contents of (an)other dict  
     
    Enumerate
    >>> data = enumerate((123, 'abc', 'hello'))
    >>> for i, value in data:
    ...     print i, value
    ...
    0 123
    1 abc
    2 hello
    
    Exception Handling

    如尝试打开文件的异常处理:

    try:
        f = open(filename, 'r')
    except IOError, e:
        return False, str(e)
    

    也可以把多种错误类型放到一个tuple里面,一次过检测:

    try:
        process_some_data()
    except (TypeError, ValueError,...), e:
        print "ERROR ", e
    

    当然也可以对不同类型的异常用不同的处理方法,在最后一种情况通常加上一种Exception,因为这样可以包括所有的异常情况:

    try:
        ...
    except (TypeError, ValueError), e:
        ...
    except ArithmeticError, e:
        ...
    except Exception, e:
        ...
    
    Files
    >>> f = open('test.txt', 'w')
    >>> f.write('foo
    ')
    >>> f.write('bar
    ')
    >>> f.close()
    >>> f = open('test.txt', 'r')
    >>> for line in f:
    ...     print line.rstrip()
    ...
    foo
    bar
    >>> f.close()
    
    Anonymous Functions

    匿名函数使用关键字lambda,由一个表达式组成,代表函数的返回值。通常的使用方式:

    lambda args: expression
    
    sorted(list_of_people, key = lambda person: person.last_name)
    
    # 等价于
    def get_last_name(person):
        return person.last_name
    
    sorted(list_of_people, key = get_last_name)
    
    * args and ** kwargs

    python里面的*不是C语言里面的指针,作为参数传递时,* 表示一个tuple(list), ** 表示dict

    例子如下:

    def check_web_server(host, port, path):
        ...
    

    调用函数的时候一般用法:

    check_web_server('127.0.0.1', 8080, '/admin/')
    

    如果把参数作为一个tuple或者dict的形式,可以通过下标的形式传递参数,但是用 * 的方式可以非常方便的完成传参:

    host_info = ('www.python.org', 80, '/')
    check_web_server(host_info[0],host_info[1], host_info[2])
    
    check_web_server(*host_info)
    
    host_info = {'host': 'www.python.org', 'port': 80, 'path': '/'}
    check_web_server(**host_info)
    
    动态实例化

    与其他的一些编程语言不同,python支持类的动态的实例化,如:

    >>> class Book(object):
    ...     def __init__(self, name):
    ...         self.name = name
    ...
    >>> john = Book('John')
    >>> john.father = 'Jack'
    >>> print john.father
    Jack
    
  • 相关阅读:
    使用 webapi+Aspose.Cells 导出execl 功能
    自定义html滚动条样式
    vue+webapi 实现WebSocket 推送
    vue 跨层级 调用solt 传递
    关于对 asp.net mvc 异步方法的理解
    c# 反射机制
    千里之行,始于足下
    [转]浅析大数据量高并发的数据库优化
    关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
    深拷贝
  • 原文地址:https://www.cnblogs.com/jolin123/p/3961672.html
Copyright © 2011-2022 走看看