Python

import

module 模块是一个文件。文件名=模块名+文件后缀,后缀有.py、.pyc、.pyo、.so等。模块中可以使用__name__获取模块名。 模块搜索路径 当模块被导入时,解释器首先搜索built-in模块,如果未找到,再搜索sys.path列表。 示例1 # file: demo.py import sys foo = 1 _bar = 1 通过import导入 >>> import demo >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'demo'] >>> dir(demo) ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '_bar', 'foo', 'sys'] >>> 通过from…import…导入 >>> from demo import foo >>> from demo import _bar >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', '_bar', 'foo'] >>> 通过from…import * 导入 >>> from demo import * >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'foo', 'sys'] >>> package 包是一个目录。包目录下为首的一个文件便是__init__.

logging

一个简单的例子 import logging logging.warning('Watch out!') # 输出到控制台 logging.info('I told you so') # 什么都不输出 输出: WARNING:root:Watch out! logging默认输出到控制台,默认输出级别为WARNING,所以INFO级别没有输出。 异常处理 logging为异常专门提供了logger.exception()接口以便输出异常,该接口只应该在异常处理时使用。 try: 1/0 except: logging.exception('Excepion:') 输出: ERROR:root:Excepion: Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: integer division or modulo by zero 配置日志 logging.basicConfig(filename='example.log',level=logging.DEBUG) basicConfig应该在记录日志之前被调用,可以被调用多次,但只有第一次调用会生效。 高级话题 logging模块提供了loggers, handlers, filters, and formatters更加现代的组件: Loggers: 暴露接口以便应用程序直接调用 Handlers: 将日志发送到相应目的地 Filters: 对日志进行过滤 Formatters: 指定日志的输出格式 日志的传输方向为: looggers->handlers->filters->formatters。