那些Python中的模块

Python的解释环境是很好用,但是如果我们需要编写一个大型的程序的时候,解释环境就完全不够用了。这个时候我们需要将python程序保存在一个文件里。通常这个文件是以.py结尾的。

对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。

模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。在模块内部,模块名可以通过全局变量 __name__ 获得。

还是之前的斐波拉赫数列的例子,我们在fibo.py文件中存放了函数的实现:

编写完毕之后,我们可以在Python的解释环境中导入它:

然后直接使用即可:

常用的函数,我们可以将其赋值给一个变量:

或者,我们在导入的时候,直接给这个模块起个名字:

或者导入模块中的函数:

每个模块都有它自己的私有符号表,该表用作模块中定义的所有函数的全局符号表。因此,模块的作者可以在模块内使用全局变量,而不必担心与用户的全局变量发生意外冲突。

前面我们提到了可以使用import来导入一个模块,并且 __name__ 中保存的是模块的名字。

和java中的main方法一样,如果我们想要在模块中进行一些测试工作,有没有类似java中main方法的写法呢?

先看一个例子:

在模块中,我们需要进行一个判断 __name__ 是不是被赋值为 "__main__"。

我们这样来执行这个模块:

以脚本执行的情况下,模块的 __name__ 属性会被赋值为 __main__ , 这也是例子中为什么要这样写的原因。

看下执行效果:

如果是以模块导入的话,那么将不会被执行:

使用import导入模块的时候,解释器首先会去找该名字的内置模块,如果没找到的话,解释器会从 sys.path变量给出的目录列表里寻找。

sys.path的初始目录包括:

要想查看模块中定义的内容,可以使用dir函数。

上面的例子列出了当前模块中定义的内容,包括变量,模块,函数等。

我们可以给dir加上参数,来获取特定模块的内容:

java中有package的概念,用来隔离程序代码。同样的在Python中也有包。

我们看一个Python中包的例子:

上面我们定义了4个包,分别是sound,sound.formats, sound.effects, sound.filters。

__init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。

当导入的时候, python就会在 sys.path 路径中搜索该包。

包的导入有很多种方式,我们可以导入单个模块:

但是这样导入之后,使用的时候必须加载全名:

如果不想加载全名,可以这样导入:

那么就可以这样使用了:

还可以直接导入模块中的方法:

然后这样使用:

如果一个包里面的子包比较多,我们可能会希望使用 * 来一次性导入:

那么如何去控制到底会导入effects的哪一个子包呢?

我们可以在 __init__.py 中定义一个名叫 __all__ 的列表,在这个列表中列出将要导出的子包名,如下所示:

这样from sound.effects import * 将导入 sound 包的三个命名子模块。

如果没有定义 __all__,from sound.effects import * 语句 不会 从包 sound.effects 中导入所有子模块到当前命名空间;它只会导入包 sound.effects。

Import 可以指定相对路径,我们使用 . 来表示当前包, 使用 .. 来表示父包。

如下所示:





  • python涓鏈夊摢浜妯″潡
    绛旓細Python涓殑妯″潡绉嶇被绻佸锛屼笅闈㈠垪涓句竴浜涘父鐢ㄧ殑妯″潡锛1. 鏁板璁$畻妯″潡 math妯″潡锛氭彁渚涗簡涓绯诲垪鏁板鍑芥暟鍜屽父閲忥紝濡傚钩鏂规牴銆佸鏁般佷笁瑙掑嚱鏁扮瓑銆2. 鏂囦欢鎿嶄綔妯″潡 os妯″潡鍜宻ys妯″潡锛氭彁渚涗簡涓庢搷浣滅郴缁熶氦浜掔殑鍔熻兘锛屽寘鎷枃浠舵搷浣溿佺幆澧冨彉閲忔帶鍒剁瓑銆俹s妯″潡涓昏澶勭悊鏂囦欢鍜岀洰褰曡矾寰勪互鍙婁笌涔嬬浉鍏崇殑杩涚▼鎺у埗鍔熻兘銆俿ys妯″潡鍒...
  • Python寮鍙戜腑甯哥敤鐨勬ā鍧鏈夊摢浜?
    绛旓細2銆sys妯″潡#鎻愪緵瑙i噴鍣ㄧ浉鍏虫搷浣 3銆乭ashlib妯″潡# 鐢ㄤ簬鍔犲瘑鐩稿叧鐨勬搷浣 4銆乯son鍜宲ickle妯″潡 #鐢ㄤ簬搴忓垪鍖栨暟鎹 5銆乻ubprocess妯″潡 6銆乻huit妯″潡#鏂囦欢鐨勫鍒剁Щ鍔 7銆logging妯″潡#鏍煎紡鍖栬褰曟棩蹇 8銆乺andom妯″潡 鐢ㄤ簬鍙栭殢鏈烘暟 9銆time datetime妯″潡鏃堕棿妯″潡 10銆乺e妯″潡 姝e垯鍖归厤 鍏充簬Python寮鍙戜腑甯哥敤鐨勬ā鍧楁湁鍝簺...
  • python鐨勬ā鍧鏄粈涔
    绛旓細Python鐨勬ā鍧楁槸鎸囦竴绯诲垪鍑芥暟銆佺被銆佸彉閲忓拰鍏朵粬鍔熻兘鐨勯泦鍚锛岃繖浜涘姛鑳介兘鍦ㄧ壒瀹氱殑妯″潡鍐呴儴琚紪鍐欏拰缁勭粐璧锋潵銆傚畠浠彲浠ュ湪Python绋嬪簭涓鍗曠嫭瀵煎叆鍜屼娇鐢紝浠ヤ究澶嶇敤浠g爜鍜屾彁楂樼紪绋嬫晥鐜囥傛ā鍧楅氬父鏄互鏂囦欢褰㈠紡瀛樺湪鐨勶紝閫氬父浣跨敤Python婧愪唬鐮佺紪鍐欏苟浠.py`浣滀负鏂囦欢鎵╁睍鍚嶃傛ā鍧椾篃鍙互鏄粠鍏朵粬Python鏂囦欢瀵煎叆鐨勪簩杩涘埗鎵╁睍鏂...
  • python涓ā鍧鏄粈涔?
    绛旓細Python涓ā鍧楀垎涓夊ぇ绫伙細鍐呯疆妯″潡銆佺涓夋柟妯″潡銆佽嚜瀹氫箟妯″潡銆1銆佸唴缃ā鍧 鍐呯疆妯″潡锛氬湪瀹夎Python涔嬪悗鑷甫鐨勬ā鍧楋紝鍙互鐩存帴浣跨敤锛屾瘮濡倀ime锛宱s锛宺e锛宺andom&hellip锛&hellip銆傛敞鎰忥細鍦ㄤ娇鐢ㄧ殑鏃跺欒鍘籭mport瀵煎叆 渚嬪锛歩mport time 2銆佺涓夋柟妯″潡 绗笁鏂规ā鍧椾笉鏄疨ython鑷甫鐨勶紝鏄渶瑕佸幓澶栭儴瀹夎鍒癙ython閲岄潰鐨勶紝...
  • Python寮鍙戜腑甯哥敤鐨勬ā鍧鏈夊摢浜?
    绛旓細涓銆佸鍏ユā鍧 importmodule frommodule.xximportxx frommodule.xximportxxasrename frommodule.xximport 浜屻佸紑婧愭ā鍧 yum銆乸ip銆乤pt-get 婧愮爜缂栬瘧瀹夎锛歅ythonsetup.pybuildPythonsetupinstall 涓夈佸父鐢ㄦā鍧 os妯″潡#鐢ㄤ綔绯荤粺绾у埆鐨勫伐浣 sys妯″潡#鎻愪緵瑙i噴鍣ㄧ浉鍏虫搷浣 hashlib妯″潡#鐢ㄤ簬鍔犲瘑鐩稿叧鐨勬搷浣 json鍜宲ickle...
  • Python蹇呭鐨勬ā鍧鏈夊摢浜?
    绛旓細涓銆乼ime涓巇atetime妯″潡 鍦≒ython涓锛岄氬父鏈夎繖鍑犵鏂瑰紡鏉ヨ〃绀烘椂闂达細鏃堕棿鎴(timestamp)锛氶氬父鏉ヨ锛屾椂闂存埑琛ㄧず鐨勬槸浠1970骞1鏈1鏃00:00:00寮濮嬫寜绉掕绠楃殑鍋忕Щ閲忋傛垜浠繍琛屸渢ype(time.time())鈥濓紝杩斿洖鐨勬槸float绫诲瀷銆傛牸寮忓寲鐨勬椂闂村瓧绗︿覆(Format String)缁撴瀯鍖栫殑鏃堕棿(struct_time)锛歴truct_time鍏冪粍鍏辨湁...
  • 澶у鍒濆Python鐨甯哥敤妯″潡
    绛旓細棣栧厛鎴戜滑鍏堟潵浜嗚В涓涓嬩粈涔堟槸python妯″潡? 涓轰簡鏂逛究缂栧啓鍙淮鎶ょ殑浠g爜,鎴戜滑浼氭妸寰堝鍑芥暟杩涜鍒嗙粍,鍒嗗埆鏀惧埌涓嶅悓鐨勬枃浠堕噷,杩欐牱鐨勮瘽,姣忎釜鏂囦欢鍖呭惈鐨勪唬鐮佸氨浼氱浉瀵硅緝灏戜竴浜,鍦╬ython涓,涓涓.py鏂囦欢灏卞彲浠ョО涓轰竴涓ā鍧 (Module) 1銆佹ā鍧楁槸浠涔 瀹氫箟: 绠鍗曟槑浜,鍏跺疄灏辨槸.py缁撳熬鐨勬枃浠跺悕,鏂囦欢鍚嶄负xxx.py,妯″潡鍚嶅垯鏄痻xx銆
  • 鏌ヨpython瀹夎浜嗗摢浜妯″潡
    绛旓細1銆佷娇鐢╬ip鍛戒护 pip鏄Python鐨鍖呯鐞嗗櫒锛屽彲浠ユ柟渚垮湴瀹夎銆佸崌绾у拰鍒犻櫎Python妯″潡銆傚湪鍛戒护琛屼腑杈撳叆pip list鍛戒护鍗冲彲鏌ョ湅褰撳墠宸茬粡瀹夎鐨勬墍鏈夋ā鍧楀強鍏剁増鏈備緥濡傦細```pip list Package Version --- --- pip 20.3.3 setuptools 49.2.1 wheel 0.36.2 ```杩欓噷鎴戜滑鍙互鐪嬪埌锛屽綋鍓嶅凡缁忓畨瑁呬簡pip銆乻etuptools...
  • 閭d簺Python涓殑妯″潡
    绛旓細鎴戜滑鍙互缁檇ir鍔犱笂鍙傛暟锛屾潵鑾峰彇鐗瑰畾妯″潡鐨勫唴瀹癸細java涓湁package鐨勬蹇碉紝鐢ㄦ潵闅旂绋嬪簭浠g爜銆傚悓鏍风殑鍦≒ython涓涔熸湁鍖呫傛垜浠湅涓涓狿ython涓寘鐨勪緥瀛愶細涓婇潰鎴戜滑瀹氫箟浜4涓寘锛屽垎鍒槸sound,sound.formats, sound.effects, sound.filters銆俖_init__.py 鍙互鏄竴涓┖鏂囦欢锛屼篃鍙互鎵ц鍖呯殑鍒濆鍖栦唬鐮佹垨璁剧疆 __...
  • python鏍囧噯搴撲腑甯哥敤鐨勭綉缁滅浉鍏妯″潡鏈夊摢浜?
    绛旓細poplibPOP瀹㈡埛绔ā鍧9銆乺obotparser鏀寔瑙f瀽Web鏈嶅姟鍣ㄧ殑robot鏂囦欢10銆丼impleXMLRPCServer涓涓畝鍗曠殑XML-RPC鏈嶅姟鍣11銆乻mtpd銆乻mtplibSMTP鏈嶅姟鍣ㄧ妯″潡銆丼MTP瀹㈡埛绔妯″潡python鏍囧噯搴撲腑甯哥敤鐨勭綉缁滅浉鍏虫ā鍧楀苟涓嶆浠ヤ笂杩欎簺銆傝繕鏈夊緢澶氾紝浣嗗苟涓嶄竴瀹氶兘闇瑕佷簡瑙o紝鍙渶鍦ㄩ渶瑕佷娇鐢ㄧ殑鏃跺欐煡鎵惧弬鑰冧娇鐢ㄥ嵆鍙
  • 扩展阅读:python所有内置模块 ... 下载python模块 ... python初学编程必背 ... python模块一览表 ... python手机版下载官方 ... python代码大全 ... python os模块详细文档 ... python十大必学模块 ... python导入自己的模块 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网