python——模块

pyhton模块(module)是一个python文件。

1、模块的引入

使用import或者from...import语句引入模块:

import module1 [,module2,module3...]

from modname import name1[,name2,name3...]

from ...import ...:从模块中导入一个指定的部分到当前的命名空间中

from...import *:一次性把time模块下的所有方法都引入进来,

在调用模块中的函数时,必须这样引用:模块名.函数名

2、搜索路径

当导入一个模块,python解析器对模块位置的搜索顺序为

1)当前目录

2)若不在当前目录,python则搜索在shell变量pythonpath下的每个目录

3)若都找不到,python会查看默认路径

模块搜索路径存储在system模块的sys.path变量中,变量包含当前目录,pythonpath和由安装过程决定的默认目录

windows下查看python的路径:

在cmd中输入set path,即可打开系统环境变量path变量,查看一下是否有python的目录

windows下设置pythonpath:

set pythonpath=c:\python35\lib

3、命名空间和作用域

命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典

若一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量

每个函数都有自己的命名空间,类的方法的作用域规则和普通函数一样

若要给全局变量在一个函数里赋值,必须使用global语句

4、dir()函数

dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。返回的列表容纳了在一个模块里定义的所有模块、变量、函数。

eg:

import math
content=dir(math)
print(content)

输出结果:

['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

5、python中的包

简单讲,包就是文件夹,python 2中的包中必须包含__init__py文件,该文件内容可以为空,__init__用于标识当前文件夹是一个包.

6、模块调用

例如:创建一个目录project,并在目录下创建两个文件:support.py、add.py

其中,add.py调用了support.py.

我们会发现在project目录下多了一个__pycache__/support.cpython-35.py文件,该文件的作用是:为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc

7、跨目录模块调用

若被调用的文件与调用文件不在同一目录下,假设文件目录结构如下:

project/

|——model/

|         |___pub.py

|____count.py

count.py

from model.pub from add

print(add(4,5))

7、跨目录模块调用

例如:目录结构如下

project/

|-----model/

|          |----count.py

|          |----new_count.py

|----test.py

count.py代码如下

class A():
    def add(self,a,b):
        return a+b


new_count.py代码如下:

from count import A
class B(A):
    def sub(self,a,b):
        return a-b

resule=B().add(2,5)
print(resule)

输出结果:7


test.py代码如下

from model import new_count
test=new_count.B()
test.add(2,5)

Traceback (most recent call last):
  File "D:\project\test.py", line 1, in <module>
    from model import new_count
  File "D:\project\model\new_count.py", line 1, in <module>
    from count import A
ImportError: cannot import name 'A'

分析问题:通过上面介绍的搜索路径可知,找不到该模块。

解决办法:将导入模块所在的目录添加到系统环境变量path下即可。

import sys

sys.path.append('模块所在目录')





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值