四、模块与包&常用模块

一、模块的使用

模块定义:一系列功能的集合体

  分为三大类:1.自定义模块

        2.内置模块(比如 time,os,sys)

        3.第三方模块

模块的表现形式

  1.使用python编写的py文件

  2.已被编译为共享库或DLL的C或C++扩展

  3.把一系列模块组织到一起的文件夹(ps:文件夹下有一个__init__.py文件,该文件夹称为包)

  4.使用C编写并链接到python解释器的内置模块

为什么要用模块:

  1.可以拿来内置、第三方的模块,然后直接使用,这种拿来就用的方式,会极大的提升开发效率

  2.将程序中共用的一些功能组织到一个文件中,然后程序各部分组件可以重用该文件中的功能。

    优点是 减少代码冗余,增强程序的组织结构性与可维护性

怎么用模块:

  一个py文件就是一个模块,如果文件名为modules.py,模块名则为modules

  ps:模块的使用必须搞清楚谁是执行文件,谁是被导入的模块

1、模块的使用之import

#:coding:utf-8
#modules.py
print(‘from the modules.py‘)

money=1000

def read1():
    print(‘modules模块.read1‘,money)

def read2():
    print(‘modules模块.read2‘)
    read1()

def change():
    global money
    money=0

modules.py

import modules 

money=111111111111
print(modules.money)
print(modules.read1)
print(modules.read2)
print(modules.change)
modules.money=2222
print(money)###结果为money=111111111111

modules.read1()#modules模块.read1 2222   #这个更改成功modules.money=2222

def read1():#此处定义read1
    print(‘run.py中的read1‘)

modules.read1()#执行结果仍为modules模块.read1 2222

money=20000000
modules.change()#此处执行了modules中change函数
print(money)###此处为上述money=20000000
print(modules.money)##结果为0

import modules as spam ##可以as 起个别名
print(spam.money)  #依旧执行成功  结果为0

run.py

执行文件:run.py      被导入模块是:modules.py

首次导入模块会发生三件事: 

  1、创建一个模块modules.py的名称空间
  2、执行模块对应的文件modules.py,将产生的名字丢到模块的名称空间中
  3、在当前执行文件的名称空间中拿到一个名字modules,该名字就是指向模块modules.py的名称空间的
  import modules# modules=modules.py名称空间的内存地址

ps

  在当前执行文件中引用模块中的名字语法为:modules.名字,必须加上modules.作为前缀
  modules.名字相当于指名道姓地跟某一个名称空间要名字,根本不会与当前执行文件的名字冲突

2、模块的使用之  from   import

#modules.py
# print(‘from the modules.py‘)

__all__=[‘money‘,‘read1‘]

money=1000

def read1():
    print(‘spam模块.read1‘,money)

def read2():
    print(‘spam模块.read2‘)
    read1()

def change():
    global money
    money=0

spam.py

from spam import money,read1,read2,change
#
def read1():
    print(‘run.py.read1‘)

read1()      #  run.py.read1
read2()      #  spam模块.read2  ------------>   spam模块.read1 1000

from spam import money as my
print(my)   #1000

# ===========================================
from spam import * # * 会检索被导入模块中的__all__指定的名字,如果没有该变量那默认导入所有
print(money)  #1000
print(read1)  # <function read1 at 0x0000000001EB1C80>
# print(read2) #会报错
# print(change) #会报错

run.py

执行文件:run.py      被导入模块: spam.py

首次导入模块会发生三件事
  1、创建一个模块spam.py的名称空间
  2、执行模块对应的文件spam.py,将产生的名字丢到模块的名称空间中
  3、在当前执行文件的名称空间中拿到一个名字money,该名字就是指向模块spam.py的名称空间的那个money
  from spam import money,read1,read2,change

两种导入方式的对比
相同点:函数的作用域关系在定义阶段就规定死了,与调用位置无关

from import
优点:可以不用加前缀而直接引用名字,更简洁
缺点:容易与当前执行文件中的名字冲突

import
优点:指名道姓跟某一个名称空间要名字,肯定不会与当前名称空间中的名字冲突
缺点:必须加上前缀

3、循环导入的问题

# print(‘正在导入m1‘)
#
# x=‘m1.py‘
#
# from m2 import y
#

print(‘正在导入m1‘)

def f1():
    from m2 import y,f2
    print(y)
    f2()

x=‘m1.py‘

m1.py

# print(‘正在导入m2‘)
#
# y=‘m2‘
#
# from m1.py import x

print(‘正在导入m2‘)

def f2():
    from m1 import x
    print(x)

y=‘m2.py‘

m2.py

###   run.py
# 1、创建m1.py的名称空间
# 2、执行m1.py的代码,将产生的名字丢到m1.py的名称空间中
# 3、在当前执行文件的名称空间中拿到一个名字m1
import m1

m1.f1()

4、模块的搜索路径

模块搜索路径优先级:

  内存  --------> 内置的模块 --------> sys.path(环境变量)

5、区分python文件的两种用途

一个python文件有两种用途:
  1、可以执行运行:__name__ == ‘__main__‘
  2、可以被当做模块导入:__name__ == ‘模块名‘

if __name__ == ‘__main__‘:

原文地址:https://www.cnblogs.com/xiaomogula/p/9542687.html

时间: 2024-10-11 22:27:37

四、模块与包&常用模块的相关文章

Python/模块与包之模块

Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用模块? 3.1 import    通过import导入要使用的模块 1 #spam.py 2 print('from the spam.py') 3 4 money=1000 5 6 def read1(): 7 print('spam->read1->money',1000) 8 9 def

模块下篇————包和模块

logging模块 用于便捷记录日志且线程安全的模块 logging模块的几种等级 默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息. level = logging.DEBUG设置日志级别 import logging lo

第二模块:函数编程 常用模块

01-常用模块学习-小鸡汤 02-常用模块学习-模块种类和导入方法 03-常用模块学习-模块的导入路径 04-常用模块学习-开源模块学习的安装方式 05-常用模块学习-使用国内源下载模块 06-常用模块学习-包及跨模块导入 07-常用模块学习-跨模块导入2 08-常用模块学习-相对导入 09-常用模块学习-time模块详解 10-常用模块学习-datetime模块详解 11-常用模块学习-random模块详解 12-常用模块学习-os模块详解 13-常用模块学习-sys模块详解 14-常用模块学

Day5 模块及Python常用模块

模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Module). 注意: 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 简单地说,模块就是一个保存了Python代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码! 模块分为三种: 自定义模块 开源模块 内置模块 使用模块有什么

模块和包,logging模块

模块和包,logging日志 1.模块和包 什么是包? 只要文件夹下含有__init__.py文件就是一个包. 假设文件夹下有如下结构 bake ├── test.py ├── __init__.py ├── api ├── __init__.py ├── policy.py └── versions.py ├── cmd ├── __init__.py └── manage.py └── db ├── __init__.py └── models.py 在test.py进行导入policy.p

day5 (模块和部分常用模块)

一.模块 1.什么是模块 最常常见的场景,一个模块就是包含了一组功能的python文件,例如module.py,模块名是module 可以使用import module,四个通用类别: 1 使用python编写的.py文件 2 已被编译为共享库或DLL的C或C++扩展 3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包) 4 使用C编写并链接到python解释器的内置模块 2.为什么要用模块 1.从文件级别组织程序,更方便管理 2.拿来主义,提升开

PYTHON常用模块和包

模块 '''模块:一系列功能的集合体?常见的四种模块:1.使用python编写的.py文件2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)3.使用C编写并链接到python解释器的内置模块4.已被编译为共享库或DLL的C或C++扩展''' 模块的搜索路径 '''搜索顺序:内存 => 内置模块 => sys.path?1.导入模块会优先在内存中查找2.内存中没有被加载的话,再去查找内置模块3.还没有查找到,就根据sys.path中的路径顺序逐一

Python之常用模块(六)re模块与logging模块和包

5.10 re模块 re(正则)简介:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. re元字符 元字符 匹配内容 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的空白符 \S 匹配任意非空白符 \d 匹配数字 \D 匹配非数字 \A 从字符串开头匹配 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 . 匹配任意字符,除了

Ansible5:常用模块

摘自:http://breezey.blog.51cto.com/2400275/1555530/ 根据zs官方的分类,将模块按功能分类为:云模块.命令模块.数据库模块.文件模块.资产模块.消息模块.监控模块.网络模块.通知模块.包管理模块.源码控制模块.系统模块.单元模块.web设施模块.windows模块 ,具体可以参看官方页面. 这里从官方分类的模块里选择最常用的一些模块进行介绍. 一.ping模块 测试主机是否是通的,用法很简单,不涉及参数:  ansible test -m ping