博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python语法基础:模块
阅读量:5234 次
发布时间:2019-06-14

本文共 2299 字,大约阅读时间需要 7 分钟。

模块(Module)

1.概念与格式

模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块

python用import来引入某个模块:import module1,mudule2...

2.注意点

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

为什么必须加上模块名调用呢?

答:因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名

3.from.....import ...

有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:

from 模块名 import 函数名1,函数名2....

这不仅可以引入函数,还可以引入一些全局变量

注意:

  • 通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数

  • 如果想一次性引入math中所有的东西,还可以通过from math import *来实现、

4.as可以在引用模块时改名

import math as ta=10print(t.sqrt(a))#这里t就是math

5.定位模块

当你导入一个模块,Python解析器对模块位置的搜索顺序是:

  1. 当前目录
  2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
  3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
  4. 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

6.模块制作

1).定义自己的模块

每个Python文件都可以作为一个模块,模块的名字就是文件的名字。

 

2).调用自己定义的模块

import testresult=test.add(1,2)print(result)

3).测试模块

def add(a,b):    return a+b#测试的ret=add(2,5)print("测试结果为%d"%ret)

而在引入此文件的文件中,这段测试代码不会执行

可发现test.py中的测试代码,应该是单独执行test.py文件时才应该执行的,不应该是其他的文件中引用而执行

为了解决这个问题,python在执行一个文件时有个变量__name__

直接运行此文件:

def add(a,b):    return a+b#测试的ret=add(2,5)print("__name__为%s"%__name__)

可以发现在test文件下执行__name__为__main__

在其他文件中import此文件:

import testresult=test.add(1,2)print(result)

可以发现在导入的文件中__name__为test

所以可以根据__name__变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码

7.模块中的__all__

1).没有__all__

#test.py代码class Test():    def test(self):        print("---我执行了--")def test1():    print("---我也执行了")def test2():    print("---哈哈我也执行了---")
#导入test的代码from test import *a=Test()a.test()test1()test2()

输出结果:

2).有__all__

__all__=["test1","test2"]'''设置了在from test import *时只有test1()与test2()可以被导入'''class Test():    def test(self):        print("---我执行了--")def test1():    print("---我也执行了")def test2():    print("---哈哈我也执行了---")

如果一个文件中有__all__变量,那么也就意味只有这个变量中的元素,会被from xxx import *时导入

8.包

1).概念

  • 包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为
  • 有效避免模块名称冲突问题,让应用组织结构更加清晰

2).__init__.py文件

  • __init__.py文件有什么用:控制着包的导入行为
  • __init__.py为空:仅仅是把这个包导入,不会导入包中的模块
  • __all__:在__init__.py文件中,定义一个__all__变量,它控制着 from 包名 import *时导入的模块
  • 可以在__init__.py文件中编写内容:可以在这个文件中编写语句,当导入时,这些语句就会被执行

 

转载于:https://www.cnblogs.com/python-road/p/10491957.html

你可能感兴趣的文章
MYSQL关键字的使用
查看>>
[刘阳Java]_了解BeanFactory_第4讲
查看>>
修改Linux内核参数提高Nginx服务器并发性能
查看>>
字符串谜题
查看>>
善良有什么用? (张鑫旭)
查看>>
Font-Spider 一个神奇的网页中文字体工具,就是这么任性
查看>>
python编码encode和decode
查看>>
Django 练习班级管理系统四 -- 编辑班级
查看>>
java的自增和自减
查看>>
throw 和throws 的区别
查看>>
Java 访问控制符
查看>>
VS2010 + WinDDK 搭建驱动开发环境
查看>>
Unity3D粒子系统 合集
查看>>
copy-paste component
查看>>
attenuation
查看>>
[UOJ310] 黎明前的巧克力
查看>>
Alisha's Party
查看>>
图论:Tarjan算法
查看>>
决策树与熵
查看>>
关于粒子..
查看>>