即使模块在同一个包中, 也要使用完整包名. 这能帮助你避免无意间导入一个包两次.
包
优点:
避免模块名冲突. 查找包更容易.
缺点:
部署代码变难, 因为你必须复制包层次....如果需要, 全局变量应该仅在模块内部可用, 并通过模块级的公共函数来访问.
嵌套/局部/内部类或函数
定义:
类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中....注意在生成器函数的文档字符串中使用”Yields:”而不是”Returns:”.
Lambda函数
定义:
与语句相反, lambda在一个表达式中定义匿名函数....对一个块中的某个名称的任何赋值都会导致Python将对该名称的全部引用当做局部变量, 甚至是赋值前的处理. 如果碰到global声明, 该名称就会被视作全局变量....缺点:
装饰器可以在函数的参数或返回值上执行任何操作, 这可能导致让人惊异的隐藏行为. 而且, 装饰器在导入时执行. 从装饰器代码的失败中恢复更加不可能.