from fibs import fib, fib2 print("fib", fib(5)) print("fib2 ", fib2(10))
import fibs print(fibs.fib(10)) if (__name__ == "__main__"): print("fibs.py is running ") else: print("some other file") print("hello from two.py")
import fibs import sys import os import math import random print("模块导入", fibs) print("__name__变量可用来访问模块的模块名", fibs.__name__) print("当前模块名:", __name__) print("dir函数可以列出对象的模块标识符:", dir(fibs)) print("如果不提供参数,它返回当前模块中定义的名称列表:", dir()) print("使用模块:") fibs.fib(6) ret2 = fibs.fib2(6) print(ret2) # sys print("识别操作系统:", sys.platform) print("处理命令行参数:", sys.argv) # if len(sys.argv) <= 1: # print("缺少参数,程序退出:") # sys.exit(1) print("path存储了python结束其需要搜索的所有路径:") for path in sys.path: print(path) print("查找已导入的模块:") print(sys.modules.keys) print(sys.modules.values()) print(sys.modules["os"]) # os
def test_fib(): assert fib(0) == 0 assert fib(1) == 1 assert fib(2) == 1 assert fib(5) == 5 assert fib(7) == 13
# 创建模块 # • 模块物理层面上组织模块的方法是文件,每一个 # 以.py作为结尾的python文件都是一个模块 # • 模块名称切记不要与系统中已存在的模块重名 # • 模块文件名字去掉后面的扩展名(.py)即为模块名 # 导入模块(import) # • 使用import导入模块 # • 模块被导入后,程序会自动生成pyc的字节码文件以 # 提升性能 # • 模块属性通过“模块名.属性”的方法调用 # • 如果仅需要模块中的某些属性,也可以单独导入 # 模块加载(load) # • 一个模块只被加载一次,无论它被导入多少次 # • 只加载一次可以阻止多重导入时代码被多次执行 # • 如果两个文件相互导入,防止了无限的相互加载 # • 模块加载时,顶层代码会自动执行,所以只将函数放 # 入模块的顶层是良好的编程习惯 fib(10) # 模块导入时print(__name__) 为 模块名 # 模块导入的特性 # • 模块具有一个__name__特殊属性 # • 当模块文件直接执行时,__name__的值为'__main__' # • 当模块被另一个文件导入时,__name__的值就是该 # 模块的名字