网站地图 | RSS订阅 老铁博客 - 上海SEO优化|上海网站建设|蜘蛛池出租|站群代搭建
你的位置:首页 » 前端脚本 » 正文

python模块,python 模块编写

2020-7-3 13:47:57 | 作者:老铁SEO | 0个评论 | 人浏览

  Python在处理功能复用和功能颗粒度划分时采用了类、模块、包的结构。这种处理跟C++中的类和名字空间类似,但更接近于Java所采用的概念。


  类


  类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。


  模块


  模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name?理解为名字限定符。模块名就是文件名去掉.py后缀。下面演示了一个简单的例子:


  #moduel1.py


  defsay(word):


  ????printword


  #caller.py


  importmodule1


  print__name__


  printmodule1.__name__


  module1.say('hello')


  $pythoncaller.py


  __main__


  module1


  hello


  例子中演示了从文件中调用模块的方法。这里还展示了一个有趣的模块属性__name__,它的值由Python解释器设定。如果脚本文件是作为主程序调用,其值就设为__main__,如果是作为模块被其他文件导入,它的值就是其文件名。这个属性非常有用,常可用来进行模块内置测试使用,你会经常在一些地方看到类似于下面的写法,这些语句只在作为主程序调用时才被执行。


  if__name__=='__main__':?


  ?app=wxapp(0)


  ?app.MainLoop()


  模块搜索路径


  上面的例子中,当module1被导入后,python解释器就在当前目录下寻找module1.py的文件,然后再从环境变量PYTHONPATH寻找,如果这环境变量没有设定,也不要紧,解释器还会在安装预先设定的的一些目录寻找。这就是在导入下面这些标准模块,一切美好事情能发生的原因。


  importos


  ?importsys


  ?importthreading


  ...


  这些搜索目录可在运行时动态改变,比如将module1.py不放在当前目录,而放在一个冷僻的角落里。这里你就需要通过某种途径,如sys.path,来告知Python了。sys.path返回的是模块搜索列表,通过前后的输出对比和代码,应能理悟到如何增加新路径的方法了吧。非常简单,就是使用list的append()或insert()增加新的目录。


  #module2.py


  importsys


  importos


  printsys.path


  workpath=os.path.dirname(os.path.abspath(sys.argv[0]))


  sys.path.insert(0,os.path.join(workpath,'modules'))


  printsys.path


  $pythonmodule2.py


  ['e:\\Project\\Python','C:\\WINDOWS\\system32\\python25.zip',...]


  ['e:\\Project\\Python\\modules','e:\\Project\\Python','C:\\WINDOWS\\system32\\python25.zip',...]其他的要点


  模块能像包含函数定义一样,可包含一些可执行语句。这些可执行语句通常用来进行模块的初始化工作。这些语句只在模块第一次被导入时被执行。这非常重要,有些人以为这些语句会多次导入多次执行,其实不然。


  模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。我们知道python是解释性的脚本语言,而.pyc是经过编译后的字节码,这一工作会自动完成,而无需程序员手动执行。


  包


  在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在frompackage-nameimport*这语句使用的,全部导出定义过的模块。


  Python开发中常用的模块有哪些


  一、导入模块


  1.importmodule


  2.frommodule.xximportxx


  3.frommodule.xximportxxasrename


  4.frommodule.xximport*


  二、开源模块


  1.yum、pip、apt-get


  2.源码编译安装:Pythonsetup.pybuildPythonsetupinstall


  三、常用模块


  1.os模块#用作系统级别的工作


  2.sys模块#提供解释器相关操作


  3.hashlib模块#用于加密相关的操作


  4.json和pickle模块#用于序列化数据


  5.subprocess模块


  6.shuit模块#文件的复制移动


  7.logging模块#格式化记录日志


  8.random模块用于取随机数


  9.timedatetime模块时间模块


  10.re模块正则匹配


  python中模块是什么?


  函数是模块,类也是模块,纯粹的变量定义文件也是模块。。。如果泛指import后面的内容算模块的话,包也算模块。。。。


  模块如果是包,当然就有之模块,就是包中的子包喽


  随便自己写个python文件,然后import这个文件进去,就成为你的包了。


  Python中的模块和包的区别


  1、模块(Module)就是包含代码的文件,不一定是Python代码,有四种代码类型的模块:


  ?使用Python写的程序(.py文件)


  ?C或C++扩展(已编译为共享库或DLL文件)


  ?包(包含多个模块)


  ?内建模块(使用C编写并已链接到Python解释器内)


  使用模块可以提高代码的可维护性和重复使用,还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,所以编写自己的模块时,不必考虑名字会与其他模块冲突,但要注意尽量不要与内置函数名字冲突。


  2、包(Package)就是包含模块文件的目录,目录名称就是包名称,目录中可以包含目录,子目录也是包,但包名称应该包含上一级目录的名称。Python引入了按目录来组织模块是为了避免模块名冲突,不同包中的模块名可以相同。


  注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是包名。

  • 本文来自: 老铁博客,转载请保留出处!欢迎发表您的评论
  • 相关标签:
  • 已有0位网友发表了一针见血的评论,你还等什么?

    必填

    选填

    记住我,下次回复时不用重新输入个人信息

    必填,不填不让过哦,嘻嘻。

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    相关推荐