以下只简单列举一些知识点,其他方面的知识,可以去阅读详细的教程,或者在遇到问题时再去翻阅
Python 代码的执行 当我们运行一个 Python 文件,可以在命令行上输入
python run_demo.py
run_demo.py 的文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 """ 演示Python代码的执行,请记住一句话 Python 的一切都是对象 """ from __future__ import unicode_literals, absolute_importdef func () : print('hello func' ) class MyClass (object) : class_field = 'test' print('MyClass object created' ) def func (self) : print('class func' ) import timeprint('run_demo 模块被执行' ) def main () : print(main.__name__) func() if __name__ == '__main__' : print(time.__name__) main()
test1.py 文件内容
1 2 3 4 import run_demoprint('test1 模块被执行' )
test2.py 文件内容
1 2 3 4 5 6 7 8 9 import run_demoimport test1""" 当运行该模块的时候,会发现只输出一个 run_demo 模块被执行 """ print('test2 模块被执行' )
关于 Python 运行的一些原理,上面只做了简要介绍,详细可以查看这篇文章
列表/字典解析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 products = [ { 'name' : 'news' , 'id' : 1 , 'year' : '2010' , 'status' : 'up' }, { 'name' : 'search' , 'id' : 2 , 'year' : '2000' , 'status' : 'up' }, { 'name' : 'wave' , 'id' : 3 , 'year' : '2009' , 'status' : 'down' } ] new_products = [{'name' : t['name' ]} for t in products] new_product_dict = {t['name' ] : t for t in products}
列表分片 1 2 3 4 5 6 7 8 9 data = range(10 ) data = data[1 :] data = data[:-1 ] data = data[1 :-1 ]
读写文件 文件的读写模式有
模式
描述
r
只读
r+
可读可写,文件指针在文件开头
rb
以二进制模式读取
rb+
以二进制模式读取,文件指针在文件开头
w
只写,如果文件已存在则覆盖,不存在则新建
w+
等同 w 但是可读,文件指针在文件开头,打开的是新文件,里面没有内容
wb
等同 w 但是以二进制模式处理数据
wb+
等同 wb 但是可读,文件指针在文件开头
a
以追加内容的方式写入,如果文件不存在,则新建
a+
等同 a 但是可读
ab
等同 a 但是以二进制模式处理数据
ab+
等同 ab 但是可读,需要注意文件指针的位置
也可以参考这里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 with open('test.txt' , 'r' ) as f: for line in f: print(line) with open('test.txt' , 'rb' ) as f: data = f.read() with open('test.txt' , 'w' ) as f: f.write('test content' ) with open('test.txt' , 'a' ) as f: f.write('test content' )
装饰器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 from __future__ import unicode_literals, absolute_import""" 装饰器的例子 """ import timeimport randomfrom functools import wrapsdef log (func) : """ 打印函数运行日志的装饰器 :param func: :return: """ @wraps(func) def wrapper (*args, **kwargs) : print('decorator log is running' ) print('before call %s' % func.__name__) ret = func(*args, **kwargs) print('after call %s' % func.__name__) return ret return wrapper def log_with_message (message) : """ 打印函数运行日志的装饰器,可以再给装饰器传参数 :param message: :return: """ def decorator (func) : @wraps(func) def wrapper (*args, **kwargs) : print('decorator log_with_message is running, %s' % message) ret = func(*args, **kwargs) return ret return wrapper return decorator def time_elapsed (func) : """ 记录函数运行耗时的生成器 :param func: :return: """ @wraps(func) def wrapper (*args, **kwargs) : print('decorator time_elapsed is running' ) timestamp = time.time() * 1000 ret = func(*args, **kwargs) now_ts = time.time() * 1000 elapsed = now_ts - timestamp print('%s costs time: %.2fms' % (func.__name__, elapsed)) return ret return wrapper @log def test_func1 (foo=123 ) : print('test_func1 is running' ) print(foo) @time_elapsed @log def test_func2 () : print('test_func2 is running' ) time.sleep(random.randrange(100 , 200 ) / 100 ) @log_with_message('my message') def test_func3 () : print('test_func3 is running' ) def main () : test_func1(foo=666 ) print('-------------' ) test_func2() print('-------------' ) test_func3() def main2 () : """ 揭示装饰器本质的例子,可以看到这里的代码和main()中执行的结果是一样的 """ print('---------------' ) print('揭示装饰器本质的例子' ) new_func = log(test_func1) new_func(foo=666 ) print('-------------' ) new_func = time_elapsed(log(test_func2)) new_func() print('-------------' ) new_func = log_with_message('my message' )(test_func3) new_func() print('-------------' ) if __name__ == '__main__' : main() main2()