六、python的模块

六、python的模块(module)

1、模块

1.1模块的概念

模块是一个定义python语句和语句的文件。模块的文件名=模块名+后缀.py。模块之间代码共享,可以相互调用,实现代码重用。

模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。

模块分类:1)、自定义模块 2)、python标准库模块 3)、python第三方模块

1.2 模块的导入

一行导入一个模块

import moduleName

一行导入多个模块

import moduleName1,moduleName2......

根据导入位置的不同,作用域也会不同。

如果在模块顶层导入,作用域是全局。

如果在函数中导入,作用域只在函数中。

好的编程习惯是把模块放在顶层导入。

一个模块只能加载一次,可以阻止多次导入代码被多次执行。

  • 1、import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
  • 2、sys.argv 是一个包含命令行参数的列表。
  • 3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
import sys
print(sys.platform)#显示当前的系统信息

结果:win32

1.3模块导入的搜索路径

当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

  • 1、当前目录
  • 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  • 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

1.4 导入指定模块的属性

from moduleName import 属性名

这里的属性是指模块的内容,包括函数,类和变量。

from moduleName as name 将导入的模块起了一个别名。

from moduleName import 属性名 as 属性新名字

将导入的属性起了一个别名

from ... import * 把一个模块的所有内容全都导入到当前的命名空间也是可行的。

注意:避免使用from ... import *,容易导致名称混乱。

1.5 关于模块的函数

1.5.1 dir()函数

dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。

返回的列表容纳了在一个模块里定义的所有模块,变量和函数。

import math
content = dir(math)
print('math模块里面的内容是:', content)

结果:

math模块里面的内容是: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

在这里,特殊字符串变量__name__指向模块的名字,__file__指向该模块的导入文件名。

1.5.2 globals() 和 locals() 函数

根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。

如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

1.5.2reload() 函数

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。

因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。语法如下:

reload(module_name)

在这里,module_name要直接放模块的名字,而不是一个字符串形式。比如想重载 hello 模块,如下:

reload(hello)

2.包

在python中也有包,和java中包的作用一样。

 

3、对象

万物皆对象,用来描述客观存在的一个实体。对象是一个能够看得到,摸得着的具体实体。是由一组特征和行为构成的。相当于java中的对象

3.1 属性

对象具有的各种特征,每个对象的每个属性都会拥有特定的值。相当于java中的成员变量

3.2 方法

对象执行的行为(操作),相当于java中的方法

3.3创建类的实例对象

对象名=类名(参数列表)    参数列表是可写可不写的,必须根据实际需求来定。默认调用类中的__init__(参数列表)方法

访问类属性、方法之前必须先创建一个实例对象

使用“.”访问对象的属性和方法,这些和java的规定一样

class firstClass:
    '''This is my first class.

    this is a little small.'''
    def firstMethod(self):
        pass



f1=firstClass()
f1.firstMethod()
print(f1.__doc__)

This is my first class.

    this is a little small.

3.4类对象的生命周期

定义类  ——> 创建对象(构造方法__init__() 创建新对象时系统会自动调用,传入新创建对象,可作为对象的属性赋值)——>访问对象成员——>销毁对象(析构方法:__del__()销毁对象时系统会自动调用,传入销毁对象,回收对象所占用的资源)

4、类

抽取众多对象的共同特征(属性和方法)。具有相同或相似性质的对象的抽象就是类。和java中类的定义一样的。

类具有属性:是对象状态的抽象

类具有方法:是对象行为的抽象

类就是模子,定义所要创建对象将会拥有的特征(属性)和行为(方法)

4.1类的定义

class 类名:

     '''

     可选的文档注释(文档字符串)

   提供程序的帮助信息,可选的,通常是一个多行字符串,首行以大写字母开始,句号结尾,第二行是空     行,第三行是详细描述信息。可以通过“类名.__doc__”访问

     '''

类成员

class firstClass:
    '''This is my first class.

    this is a little small.'''
    def firstMethod(self):#在类的方法定义中使用self,是一个隐含参数。
        pass   #空语句,不做任何操作,一般用作占位语句。用于保证格式完整,保证语义完整。

4.2 类成员

类成员是指类的属性和方法

4.3 类成员的命名规则

注意:类成员的名字要见名知意

4.3.1类名的命名规则:

1、首字母大写,不能以数字开头

2、如果多个单词组成,所有单词必须首字母大写

3、不能用下划线“_”

4.3.2 属性名(变量)的命名规则(和java中一样)

1、使用名词,说明操作对象的特征

2、一个单词的所有字母小写

3、如果由多个单词组成,除第一个单词的其他单词首字母必须大写,其余单词小写(骆驼命名规则)

4.3.3 方法名的命名规则(和java中一样)

1、使用谓语(动词+对象名),说明对对象进行什么样的操作

2、一个单词的所有字母小写

3、如果由多个单词组成,除第一个单词的其他单词首字母必须大写,其余单词小写(骆驼命名规则)

4.3.4方法参数列表里面的“self”意义

表示自己,本身,表示当前对象,和java中this一样。

使用方法:

1、作为类方法定义的第一个参数

2、是隐含参数,调用方法时不需要传入实参

3、访问类实例对象的属性self.属性

4、调用实例对象的方法  self.方法(参数列表)

5、封装

对象同时具有属性和方法两项特征。

对象的属性和方法通常被封装在一起,共同体现事物的特征,二者相辅相承,不能分隔。和java中封装的作用所不同,实现形式也不相同。

6、类和对象的关系

对象的抽象就是类,类的具体化就是对象。类是对象的类型,对象是类的实例。类是抽象的概念,仅仅是模板。和java中一样。

 

转载于:https://my.oschina.net/u/3423148/blog/979065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值