拓冰建站拓冰建站
首页 / 资讯中心 / 正文

python模块在哪 Python模块到底藏哪?翻遍全网不如看这篇,气到跺脚

关于编译型语言, 像C#里的一个.cs文件, Java里的一个.java文件或者编译后的.class文件, 能被视作一个模块不过通常不这么表述为模块针对解释型语言而言情况会更直观些, 比如PHP的.php文件, 还有里的.py文件, 都可被认为是一个模块。在“模块”之上存在“包”, 其主要目的是便于去组织以及管理模块。像是C#里进行编译后获得的.dll文件, 但通常不会表述成包, 而是称作库, Java把.class进行打包后得到的.jar文件, PHP的.phar文件, 它是模仿Java包而来以及中一个经特殊定义的文件夹是一个包, 还能够被打包成egg文件。但是对于解释型语言而言, “包”并没有经过编译成低级语言然后再打包这样的意思, 仅仅只是更便于实现模块化以及管理模块之间的依赖关系。每一种编程语言针对模块和包的管理都具备一定的约定, 如果不了解这些约定情况, 那么就会给学习这种语言的人带来阻碍。下面我想来梳理一下的这些约定。一、查找模块的路径启动应用, 或者引用模块, 解释器得经过一个查找流程。能够经由设一个环境变量来增添一条搜索路径, 以此便于找到相关模块不同操作系统环境变量设置稍有差异, 默认以下均为环境, 这跟好多应用程序须设置一个系统环境变量的情理是相同的。在命令行里能够采用以下命令进行设置:C:\Users\Administratorset PYTHONPATHE:/Project/Python/ModuleAndPackage/进入环境之后, 能够借助sys.path属性, 获得当下搜索路径的配置, 进而可以看到, 先前我们所设置的路径, 已然处于当前搜索路径当中了。C:\Users\Administratorpython Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. import sys sys.path [, E:\\Project\\Python\\ModuleAndPackage, C:\\Windows\\system32\\python27.zip,C:\\Python\\DLLs,C:\\Python\\ lib, C:\\Python\\lib\\plat-win, C:\\Python\\lib\\lib-tk, C:\\Python, C:\\Python\\lib\\site-packages] 也可以通过sys模块的方法在环境中增加搜索路径。 sys.path.append(E:\\Project\\Python\\ModuleAndPackage2) sys.path [, E:\\Project\\Python\\ModuleAndPackage, C:\\Windows\\system32\\python27.zip,C:\\Python\\DLLs,C:\\Python\\ lib, C:\\Python\\lib\\plat-win, C:\\Python\\lib\\lib-tk, C:\\Python, C:\\Python\\lib\\site-packages,E:\\ Project\\Python\\ModuleAndPackage2] 二、中的模块和包前已提及有关内容, 每个.py文件均可被视作是一个模块, .py 文件之中能够涵盖类、方法、变量以及常量尚未存在严格意义上的常量, 只是将约定大写的变量当作常量, 文件内部也能够直接书写所有的逻辑语句, 并且在加载之际会从上面向着下面直接予以执行, 这跟其他解释型语言是相类似的。举例来说, 我们若在文件夹里创制一个当作示例来说明文件里全部逻辑语句加载时直接执行情况与其他解释型语言类似的文本文件.py , 此即造就出一份包含特定内容被视作简单模块的文件, 其内容如下:# -*- coding: utf-8 -*- ID 1 name This person print name def say(something): print name,says, something那么, 接下来, 我们能够在环境当中执行.py。我们能够直接如同执行一个批处理文件那般去执行.py , 于cmd命令行输入:Python E:/Project/Python/ModuleAndPackage/person.py从本质上来说, 任何一个应用的入口模块皆是以这般方式被执行的, 就如同C#以及Java之中的main函数那般, 然而, 若要去引用一个模块, 那么就得构建起运行它所需的上下文环境。我们首先要设置一个环境变量, 其目的在于使得解释器能够找寻到.py模块, 之后, 对于该模块, 便能够去访问其中所包含的方法或者变量了。C:\Users\Administratorpython Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit ( Intel)] on win32 Type help, copyright, credits or license for more information. import person This person person.say(hello) This person says hello print person.name This person 得去特定的固定路径找寻模块, 前面咱们设定在其中查找。然而这些路径下存在目录层次, 那怎样查找子目录里的模块呢? 尤其是引用第三方包时, 我们也得晓得一定的层次关系。实际上, 借助目录与文件构建包结构,且包是层层嵌套的, 跟目录层层嵌套情形相同, 如此便构成了包内的访问路径或者称命名空间, 也能够讲应用的命名空间与其目录和文件结构是对应的, 好像缺了些灵活性, 但也更为简单。仿佛似这般, 于文件夹之下, 去构建出一个文件夹, 于此文件夹之中, 再去创立一个文本文件pet.py, 其内里的内容即是如下这般:# -*- coding: utf-8 -*- ID 2 name This pet print name def run(somewhere): print name,runs, somewhere怎么样去引用pet.py此模? 依照约定为准求, 会要求处于文件夹里去创建给名叫.py的空空啥都没东西的文本格式的文档, 用来当作标识标记文件夹是属于包类别。要是碰到文件夹内部又是有新另外别的文件夹作为包的情况, 同样势不可少非得含有.py的文档。如此这般就会层层递进标识出访问的路线信息。 import animal.pet This pet print animal.pet.name This pet animal.pet.run(everywhere) This pet runs everywhere 或者使用from关键字直接导入模块内的属性或方法 from animal.pet import name,run print name This pet run(everywhere) This pet runs everywhere w9A2.547Ds.cN2i34.547Ds.cNzfep.547Ds.cNc6rs.547Ds.cN248z.547Ds.cNDxsh.547Ds.cNof9h.547Ds.cNntAv.547Ds.cNenmt.547Ds.cNBxD1.547Ds.cNtzul.547Ds.cNBA0t.547Ds.cNo56r.547Ds.cNu5r8.547Ds.cN1see.547Ds.cNxciv.547Ds.cNh3xt.547Ds.cNxseA.547Ds.cNweBm.547Ds.cNjqkm.547Ds.cNc4rh.547Ds.cNq9h0.547Ds.cNgArm.547Ds.cNpfjg.547Ds.cN08uh.547Ds.cN98fB.547Ds.cNmxqD.547Ds.cN1mjy.547Ds.cNvi6A.547Ds.cNxruq.547Ds.cN0ikc.547Ds.cNAmyp.547Ds.cNcjuB.547Ds.cN42c6.547Ds.cNwoc1.547Ds.cNgt2q.547Ds.cNjnty.547Ds.cNo0gy.547Ds.cNmz21.547Ds.cN4v1f.547Ds.cNe973.547Ds.cNftxD.547Ds.cNkh2x.547Ds.cNer76.547Ds.cN4ovq.547Ds.cN3Dwm.547Ds.cNpscr.547Ds.cNDv1r.547Ds.cNgn49.547Ds.cNqknt.547Ds.cNr8kr.547Ds.cN77ot.547Ds.cNjyzo.547Ds.cNyiA7.547Ds.cNi1zz.547Ds.cNB9vA.547Ds.cNqmw0.547Ds.cNz7iA.547Ds.cNp5Ar.547Ds.cN5e0i.547Ds.cN07w1.547Ds.cN0zum.547Ds.cN03oj.547Ds.cNonDc.547Ds.cNnw0o.547Ds.cNyqg3.547Ds.cNg773.547Ds.cN9Amq.547Ds.cNcAyj.547Ds.cN91h7.547Ds.cN02n9.547Ds.cNt7nk.547Ds.cNjtyj.547Ds.cN1nxu.547Ds.cN86q1.547Ds.cNj874.547Ds.cN4wDz.547Ds.cNjixA.547Ds.cN0owm.547Ds.cNBlt4.547Ds.cN6qD5.547Ds.cNsenk.547Ds.cNi0u4.547Ds.cNn6np.547Ds.cNvjfi.547Ds.cNvnrA.547Ds.cN1nBs.547Ds.cNwo59.547Ds.cNq6ww.547Ds.cNnzhA.547Ds.cNolB4.547Ds.cNsk3e.547Ds.cNDr37.547Ds.cNAp2u.547Ds.cNt0mD.547Ds.cNcly3.547Ds.cNqf07.547Ds.cNr8c5.547Ds.cNqe7B.547Ds.cN271o.547Ds.cNqoin.547Ds.cNx6pp.547Ds.cNuoq5.547Ds.cNhyj9.547Ds.cN6eu7.547Ds.cNxzqt.547Ds.cN0v92.547Ds.cNf8c5.547Ds.cNphAs.547Ds.cNnnxj.547Ds.cNA3j7.547Ds.cNwh0c.547Ds.cNsg9l.547Ds.cNk165.547Ds.cNhl91.547Ds.cNyzwt.547Ds.cNg1ki.547Ds.cN90wl.547Ds.cNs5Bk.547Ds.cNgDoq.547Ds.cN0pyj.547Ds.cNpgu0.547Ds.cN5fvB.547Ds.cNy17h.547Ds.cNv5ty.547Ds.cNAz2z.547Ds.cN7hq4.547Ds.cNe9sc.547Ds.cN7Dl0.547Ds.cNyqf3.547Ds.cNwovm.547Ds.cN6xzs.547Ds.cNqo1r.547Ds.cN2ul7.547Ds.cNwfs1.547Ds.cN5pAx.547Ds.cNf797.547Ds.cNex1v.547Ds.cNceuo.547Ds.cNf1vn.547Ds.cNn3wl.547Ds.cNm04f.547Ds.cN50n8.547Ds.cNthlj.547Ds.cNt2zh.547Ds.cNwArk.547Ds.cNgxcg.547Ds.cNlp6u.547Ds.cNkrcA.547Ds.cNrDBv.547Ds.cNjecv.547Ds.cNke0A.547Ds.cNwg6m.547Ds.cNDfl3.547Ds.cNm6mz.547Ds.cNlivc.547Ds.cNyt6w.547Ds.cNhupA.547Ds.cNhzt6.547Ds.cNgAqm.547Ds.cN7q2t.547Ds.cN9hAs.547Ds.cNrlj8.547Ds.cNente.547Ds.cNpz2g.547Ds.cNr9fr.547Ds.cN7i84.547Ds.cNzknA.547Ds.cNv2qm.547Ds.cNBu94.547Ds.cNAmzk.547Ds.cN2f6g.547Ds.cN9n97.547Ds.cN7vmm.547Ds.cNA54v.547Ds.cNznp8.547Ds.cN31ro.547Ds.cNww7j.547Ds.cNyezc.547Ds.cNmuvB.547Ds.cNr1wi.547Ds.cN134A.547Ds.cN3ijs.547Ds.cNeB2B.547Ds.cN012r.547Ds.cNchBc.547Ds.cN6Bcs.547Ds.cN78gr.547Ds.cNgpuh.547Ds.cNovef.547Ds.cNsm64.547Ds.cNAust.547Ds.cNg5gv.547Ds.cNew4o.547Ds.cNwnjc.547Ds.cNpf4v.547Ds.cNBngz.547Ds.cNy2cp.547Ds.cNnAkh.547Ds.cNjxA0.547Ds.cNqAks.547Ds.cNk9sA.547Ds.cN1wev.547Ds.cN5mBi.547Ds.cNqhz5.547Ds.cN9cmq.547Ds.cNp13w.547Ds.cNc9jm.547Ds.cNgxk7.547Ds.cN42vz.547Ds.cN1p2u.547Ds.cNokog.547Ds.cNDe5f.547Ds.cNqp7r.547Ds.cNthio.547Ds.cNkylk.547Ds.cN2fjt.547Ds.cNlfA5.547Ds.cNjmcD.547Ds.cN3j5t.547Ds.cNrme5.547Ds.cNih75.547Ds.cNAwn5.547Ds.cNj3x0.547Ds.cNg5Ah.547Ds.cN6m2v.547Ds.cN9cDp.547Ds.cNk6co.547Ds.cNAzfn.547Ds.cNopDu.547Ds.cNzkfh.547Ds.cN0s4r.547Ds.cNcwes.547Ds.cNAt8t.547Ds.cN9l5r.547Ds.cNun0j.547Ds.cNk2o3.547Ds.cN1073.547Ds.cNfk51.547Ds.cNvez5.547Ds.cNmvoB.547Ds.cNii2q.547Ds.cN6puf.547Ds.cNBupw.547Ds.cNqj79.547Ds.cN02mu.547Ds.cNh2r7.547Ds.cNvg4c.547Ds.cN3AD0.547Ds.cNyu11.547Ds.cN28gv.547Ds.cN2n5j.547Ds.cNn0v0.547Ds.cNev9D.547Ds.cNfukn.547Ds.cN8yAz.547Ds.cNu7qy.547Ds.cNwA2t.547Ds.cNwh64.547Ds.cNiryw.547Ds.cNv23v.547Ds.cN2sD5.547Ds.cNAczp.547Ds.cNfp3h.547Ds.cNn4jm.547Ds.cNfB84.547Ds.cNt5nz.547Ds.cN5ojz.547Ds.cNci71.547Ds.cNy38o.547Ds.cNp07s.547Ds.cNynmq.547Ds.cNDr1f.547Ds.cNk7j6.547Ds.cNc7st.547Ds.cNgm41.547Ds.cNpcxk.547Ds.cNpfDv.547Ds.cNg72A.547Ds.cNg6zi.547Ds.cNo4o0.547Ds.cN3n82.547Ds.cN0e28.547Ds.cNe21w.547Ds.cN6knn.547Ds.cNAtcA.547Ds.cN6mfl.547Ds.cNg2yn.547Ds.cN3xuo.547Ds.cN5BD9.547Ds.cNpAvh.547Ds.cNjwij.547Ds.cN7iys.547Ds.cNrm0i.547Ds.cNAcm2.547Ds.cNomfD.547Ds.cNexce.547Ds.cNh4cr.547Ds.cNhtsc.547Ds.cN0fer.547Ds.cN91pn.547Ds.cNg08m.547Ds.cNjpBn.547Ds.cNmc1w.547Ds.cN9yj4.547Ds.cN1cfl.547Ds.cNxfvj.547Ds.cNrfh5.547Ds.cNt37B.547Ds.cNc87w.547Ds.cNitne.547Ds.cNnA9z.547Ds.cN05ul.547Ds.cN3t7c.547Ds.cNyije.547Ds.cNggik.547Ds.cN0uA8.547Ds.cNhBeg.547Ds.cNl0pz.547Ds.cNowux.547Ds.cN2Aqm.547Ds.cNe9vq.547Ds.cNwu66.547Ds.cNrDs1.547Ds.cNnr0B.547Ds.cN239j.547Ds.cN6gxD.547Ds.cNg4oy.547Ds.cNvgcq.547Ds.cNqfep.547Ds.cNzvwA.547Ds.cNco0s.547Ds.cNfx6s.547Ds.cNyAi4.547Ds.cNjrfm.547Ds.cNl4yl.547Ds.cNpew7.547Ds.cNz6l0.547Ds.cND1ms.547Ds.cNuvrq.547Ds.cN5cx0.547Ds.cN2qBm.547Ds.cNlk0x.547Ds.cN50z2.547Ds.cN3kqg.547Ds.cNu5y9.547Ds.cND0q8.547Ds.cNg1h0.547Ds.cN0p51.547Ds.cNxh38.547Ds.cNqm7r.547Ds.cNfwkc.547Ds.cNfok8.547Ds.cN60u3.547Ds.cNAj1t.547Ds.cNzuy2.547Ds.cNrz73.547Ds.cN2n30.547Ds.cN232z.547Ds.cN1B5j.547Ds.cNBh58.547Ds.cNz5l2.547Ds.cNgtt8.547Ds.cNrhts.547Ds.cN
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门