Python模块

Python模块

可以将代码量较大的程序分割成多个有组织的、彼此独立但又能相互交互的代码片段,这些自我包含的有组织的代码段就是模块

模块在物理形式上表现为以.py结尾的代码文件

1.一个文件被看作一个独立的模块,一个模块也可以被看作一个文件

2.模块的文件名就是模块的名字加上扩展名.py

3.每个模块都有自己的名称空间

Python允许"导入"其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统

1.Python中,模块也是对象

2.在一个模块的顶层定义的所有变量都在被导入时为了被导入模块的属性

Python程序架构

一个Python程序通常包括一个顶层程序文件和其它的模块文件

顶层文件:包含了程序的主要控制流程

模块文件:为顶层文件或其它模块提供各种功能性组件

模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行。

模块的执行环境

模块是被导入的,但模块也可以导入和使用其它模块,这些模块可以用Python或其它编程语言写成的

模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素

导入模块

在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名

import语句

导入指定的整个模块,包括生成一个以模块命名的名称空间

import module1[,module2][,moduleN]]

建议一个import语句导入一个模块

import modules as module_alias 别名

from-import语句

常用于指定模块的部分属性至少当前名称空间

from module import name1[,name2][,...nameN]]

import和from-import是赋值语句

import和from是可执行语句,类似于def,因此,它们可以嵌套在if测试中,出现def中等等

Python执行到这些语句时才会对其进行解析,这意味着,所有来自模块的属性仅在import语句执行才能使用

import和from都是隐形赋值语句

import将整个模块对象赋值给一个变量名

from将一个或多个变量名赋值给导入此模块的模块中的同名对象

模块就是名称空间

模块的名称空间可以通过属性_dict_或dir(M)获取

模块属性可通过点号(.)运算符获取

模块是一个独立的作用域

import的工作机制

import语句导入指定的模块会执行三个步骤

1.找到模块文件

在指定的路径下搜索模块文件

2.编译成字节码

文件导入时就会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件

3.执行模块的代码来创建来创建其所定义的对象

模块文件中所有语句会依次执行,从头至尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性

注意:模块只在第一次导入时才会执行如上操作

后续的导入操作只不过是提取内存中已加载的模块对象

reload()可用于重新加载模块

模块搜索

Python解释器在import模块时必须先找到对应的模块文件

1.程序主目录

2.Pythonpath目录(如果设置了此变量)

3.标准链接库目录

4.任何.pth文件的内容(如果存在.pth文件)

这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径中的第一个符合导入文件名的文件

_______________________________________________________________________________________________

做有思想的新青年

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

Java多线程技术的9大知识点总结——精心整理

1,进程和线程的概念。 |--进程:是程序的动态执行过程,它经历了从代码加载,执行,到执行完毕的一个完整过程。 |--线程:是实现并发机制的一个有效手段。 ? ...

28660
来自专栏Hongten

php开发_多关键字,高亮显示

================================================================

15410
来自专栏程序员互动联盟

【专业技术】C语言EOF如何使用?

存在问题: 又一次遇到有人问EOF的用法,到底如何来使用那? 解决方案: 这里有一篇文章写的不错,希望对EOF没有理解的同学能有所帮助。 我学习C语言的时候,遇...

42180
来自专栏瓜大三哥

matlab GUI基础3

低级文件I/O 1.文件读取 fopen:文件打开 fclose:文件关闭 fread:二进制数据的读取 fwrite:二进制文件写入 fgetl:逐行读取 f...

25650
来自专栏IT可乐

Linux系列教程(二十二)——Linux的bash变量

  上篇博客我们介绍了bash的一些基本功能,这是我们平时操作最频繁的。本篇博客我们介绍bash的变量,为后面编写shell脚本做铺垫。 1、什么是变量   变...

227100
来自专栏知识分享

(一)Lua脚本语言入门

今天开始自己的Lua语言学习,Lua脚本语言,是介于应用程序和开发其应用程序的底层编程语言之间,,它很方便调用其它语言,它只是在载入时对其进行编译,而不像我们写...

43170
来自专栏lgp20151222

idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错...

1.3K30
来自专栏Python小屋

Python导入标准库和扩展库对象的几种方式

Python中的对象大概可以分为三类:内置对象、标准库对象和扩展库对象。其中内置对象是直接编译进解释器的可以直接使用,没有对应的Python源代码;标准库对象是...

60580
来自专栏CaiRui

Python之简单的用户登录和注册

#!/bin/bash/env python # -*- coding:utf-8 -*- def login(username,password): ...

459100
来自专栏瓜大三哥

matlab GUI基础3

低级文件I/O 1.文件读取 fopen:文件打开 fclose:文件关闭 fread:二进制数据的读取 fwrite:二进制文件写入 fgetl:逐行读取 f...

219100

扫码关注云+社区

领取腾讯云代金券