查漏补缺

1 Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换
2 写 u'中' 和 u'\u4e2d' 是一样的,\u后面是十六进制的Unicode码。因此,u'A'和u'\u0041'也是一样的。把 u'xxx' 转换为UTF-8编码的'xxx'用encode('utf-8')方法:

>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'

3 list 删除:要删除指定位置的元素,用pop(i)方法,其中i是索引位置
4 tuple 定义一个元素时,为了避免歧义:所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t
(1,)

5 set 要创建一个set,需要提供一个list作为输入集合
6 函数参数:定义默认参数要牢记一点:默认参数必须指向不变对象!
要修改上面的例子,我们可以用None这个不变对象来实现:

 def add_end(L=None):
        if L is None:
        L = []
        L.append('END')
    return L

所以,我们把函数的参数改为可变参数:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

如果传入参数是个list可用如下方式:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

关键字参数

def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

调用的时候:

>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}

>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}

>>> func(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}

>>> func(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}

7 切片操作:
字符串'xxx'或Unicode字符串u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

8 列表生成式

>>> [x * x for x in range(1, 11) if x % 2 == 0]

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

9 map reduce

>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> def fn(x, y):
...     return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])
13579

9 sys包

import sys
args = sys.argv

10 type
但是这种写法太麻烦,Python把每种type类型都定义好了常量,放在types模块里,使用之前,需要先导入:

>>> import types
>>> type('abc')==types.StringType
True
>>> type(u'abc')==types.UnicodeType
True
>>> type([])==types.ListType
True
>>> type(str)==types.TypeType
True

我们要判断class的类型,可以使用isinstance()函数。

>>> isinstance(h, Dog)
True

11 try:

try:
    print 'try...'
    r = 10 / 0
    print 'result:', r
except ZeroDivisionError, e:
    print 'except:', e
finally:
    print 'finally...'
print 'END'

12 logging
Python内置的logging模块可以非常容易地记录错误信息:

import logging

def foo(s):
    return 10 / int(s)

def bar(s):
    return foo(s) * 2

def main():
    try:
        bar('0')
    except StandardError, e:
        logging.exception(e)

main()
print 'END'

13 断言

assert n != 0, 'n is zero!'

14 单元测试
为了编写单元测试,我们需要引入Python自带的unittest模块

15 文档测试
并且,Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试。
doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,可以用...表示中间一大段烦人的输出。

16 文件操作:

with open('/path/to/file', 'r') as f:
    print f.read()

17 幸运的是shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,它们可以看做是os模块的补充。

18 序列化 pickle 和json

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据类型(也是对象来的) 整数(0xffe3)、浮点数(1.23e5==1.23*10的5次方)、字符串、True...
    Gunter1993阅读 1,837评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,233评论 1 118
  • 前言:C语言是Java、Objective-C、C++等高级语言的基础、也是跨平台开发的基础,指针是C语言的重中之...
    androidjp阅读 5,618评论 8 39
  • 1、注释的第三种写法 使用#,这是shell风格的写法。 2、PHP 不像许多其他的编程语言,它不支持全局变量(除...
    zshanjun阅读 2,271评论 0 0
  • 福杯滿溢,就是我心里此刻最佳的写照! 现在回想,这晚我因錯過高鉄,而上了一堂特别宝貴又难忘的人生考驗課,这亦可以算...
    美_欣阅读 1,648评论 0 3

友情链接更多精彩内容