我是靠谱客的博主 淡淡薯片,最近开发中收集的这篇文章主要介绍学python必会的12个模块什么是模块,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

预览

763a37916dd88853c8ead8ed0ef08971.png

8aba42edea88bdd0f14bc81c60db862b.png

29d8eb93616af06a69d22e644c1f73a9.png

c355679a7d60060de2f4cf5a558e331b.png

5975becfc295654a537fd8e98f0e51b4.png

588e7d679923f6057f3e3fd2331f1f2f.png

53a4d00d10c153b575d13c4668ebbb5f.png

0e11bcba63a8a181ce7ff1765cca4296.png

930c76d179b869944017b62e0b5ee13c.png

f3f0d75c405d7452c2dd3a3e1851994b.png

23270c643bd3124590b4c13cd57fcef8.png

1d302732d14ebe7812146c9e290c1b97.png

2fa78686ac1a2687065513354b22d87b.png

   下载方式  

高清思维导图下载

关注下方公众号

回复:py12 

a3aba7d6eaaffbfe9bc3ebab3fb96995.png

长按上方二维码即可关注

回复:py12领取

什么是模块

一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

import加载的模块分为四个通用类别

1 使用python编写的代码(.py文件)

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

3 包好一组模块的包

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

为何要使用模块?

如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。

随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,

学习python

http://dida100.com/it/

模块的使用

示例文件:自定义模块my_module.py,文件名my_module.py,模块名my_module

次导入模块my_module时会做三件事

  • 1.为源文件(my_module模块)创建新的名称空间,在my_module中定义的函数和方法若是使用到了global时访问的就是这个名称空间。

  • 2.在新创建的命名空间中执行模块中包含的代码,见初始导入import my_module

    In fact function definitions are also ‘statements’ that are ‘executed’; the execution of a module-level function definition enters the function name in the module’s global symbol table.
    4 事实上函数定义也是“被执行”的语句,模块级别函数定义的执行将函数名放入模块全局名称空间表,用globals()可以查看

  • 3.创建名字my_module来引用该命名空间

    这个名字和变量名没什么区别,都是‘第一类的’,且使用my_module.名字的方式可以访问my_module.py文件中定义的名字,my_module.名字与test.py中的名字来自两个完全不同的地方。

为模块名起别名,相当于m1=1;m2=m1

1 import my_module as sm
2 print(sm.money)

  • 示范用法一:有两中sql模块mysql和oracle,根据用户的输入,选择不同的sql功能

#mysql.py
  def sqlparse():
      print("from mysql sqlparse")
  #oracle.py
  def sqlparse():
      print("from oracle sqlparse")

  #test.py
  db_type=input(">>: ")
  if db_type =="mysql":
      import mysql as db
  elif db_type == "oracle":
      import oracle as db

  db.sqlparse()

示例用法1

  • 示范用法二:为已经导入的模块起别名的方式对编写可扩展的代码很有用,假设有两个模块xmlreader.py和csvreader.py,它们都定义了函数read_data(filename):用来从文件中读取一些数据,但采用不同的输入格式。可以编写代码来选择性地挑选读取模块,例如

if file_format == "xml":
       import xmlreader as reader
  elif file_format =="csv":
       import csvreader as reader
  data=reader.read_date(filename)
在一行导入多个模块

1 import sys,os,re

from ... import...
  • 对比import my_module,会将源文件的名称空间'my_module'带到当前名称空间中,使用时必须是my_module.名字的方式而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了、 1 from my_module import read1,read2这样在当前位置直接使用read1和read2就好了,执行时,仍然以my_module.py文件全局名称空间

#测试一:导入的函数read1,执行时仍然回到my_module.py中寻找全局变量money
  #demo.py
  from my_module import read1
  money=1000
  read1()
 
  执行结果:
  from the my_module.py
  spam->read1->money 1000
# 测试二:导入的函数read2,执行时需要调用read1(),仍然回到my_module.py中找read1()
# demo.py 
from my_module import read2 
def read1(): 
    print("==========") 
 read2()

执行结果:

from the my_module.py
  my_module->read2 calling read1
  my_module->read1->money 1000
  • 如果当前有重名read1或者read2,那么会有覆盖效果。

#测试三:导入的函数read1,被当前位置定义的read1覆盖掉了
  #demo.py
  from my_module import read1
  def read1():
      print("==========")
  read1()
  
  执行结果:
  from the my_module.py
  • 需要特别强调的一点是:python中的变量赋值不是一种存储操作,而只是一种绑定关系,如下:

from my_module import money,read1
  money=100 #将当前位置的名字money绑定到了100
  print(money) #打印当前的名字
  read1() #读取my_module.py中的名字money,仍然为1000


  from the my_module.py
  my_module->read1->money 1000
  • 也支持as

from my_module import read1 as read
  • 也支持导入多行

from my_module import (read1,ead2, money)
from my_module import *

把my_module中所有的不是以下划线(_)开头的名字都导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。

from my_module import * #将模块my_module中所有的名字都导入到当前名称空间
  print(money)
  print(read1)
  print(read2)
  print(change)

执行结果:

from the my_module.py
  <function read1 at 0x1012e8158>
  <function read2 at 0x1012e81e0>
  <function change at 0x1012e8268>
模块搜索路径
  • 模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

  • 特别注意的是:我们自定义的模块名不应该与系统内置模块重名。

  • 详见博客

dir()函数

  • 内建函数dir是用来查找模块中定义的名字,返回一个有序字符串列表

import my_module
  dir(my_module)
  • 如果没有参数,dir()列举出当前定义的名字dir()不会列举出内建函数或者变量的名字,它们都被定义到了标准模块builtin中,可以列举出它们,

import builtins
  dir(builtins)

`

   下载方式  

高清思维导图下载

关注下方公众号

回复:py12 

4a46e664851d1c31aa709e326a36d1de.png

长按上方二维码即可关注

回复:py12领取

阅读更多

  • 思维导图:python字符串

  • 思维导图:Python爬虫

  • 思维导图:python列表

  • 思维导图:python字典

  • 思维导图:python标准库6张图

  • 思维导图:10个python常用库

  • 思维导图:最全python学习路线图

  • 6张思维导图,带你征服java编程

  • 一张图秒懂C语言函数

  • 一张图秒懂C语言( 指针 )

  • 一张图秒懂C语言( 数组 )

  • C语言系列教程10篇

最后

以上就是淡淡薯片为你收集整理的学python必会的12个模块什么是模块的全部内容,希望文章能够帮你解决学python必会的12个模块什么是模块所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部