初步认识
安装完python后,python自带一部分模块,自带的模块又称作内置模块。其中一部分模块在路径Lib下。(这里的文件夹可以看做包,可以把多个模块放进一个包里)
从模块的来源来讲,可以分三种:内置模块、自定义模块(自己定义的)、第三方模块 例如下载网上的django模块。
从模块的运行角度看,可以分两种:直接执行称自主模块,被导入才执行称非自主模块。
一个类型为py的文件可以作为一个模块,模块名就是文件名。模块名可以作为全局变量使用。
使用
在某路径建了module.py,复制下面代码
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
在该路径打开解释器,导入模块,使用模块里的某个函数。
如果需要在模块里用到其他模块,需要提前导入。
一次导入n个模块的全部功能:import module1[, module2[,... moduleN]
单独导入模块的某个功能:from modname import name1[, name2[, ... nameN]]
导入模块的全部功能:from modname import * 好处是不需要模块名点出来就能用。
给模块起别名:在模块名后加 as 别名
模块属性:__name__
1、因为当前moduly.py模块是被导入执行的,所以它的__name__属性是模块名称
2、修改module.py ,在第一行加入 print(__name__)
解释器执行module.py模块,喔?这次是自主模块了。
dir函数,查看模块可以用的函数、属性等。
如果模块修改了,需要借助重新加载,否则找不到修改过的东西。
import importlib; importlib.reload(modulename)
模块的路径
在没有指定模块的路径时,导入时会去什么路径下找模块呢?
1、当前py脚本的同级路径,即A脚本是ALib下,则会去ALib目录下找
2、环境变量 path
3、依赖于安装时初始化的一些路径,例如上面的Lib目录。
这里有个默认查找模块路径讨论:https://bytes.com/topic/python/answers/26800-what-pythons-module-search-path
官网参考:https://docs.python.org/3/tutorial/modules.html