欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python自学笔记(五)

程序员文章站 2022-03-24 11:36:01
...

1、类和对象

和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。对象可以包含任意数量和类型的数据。

1.1 类定义

语法格式如下:

class ClassName:
   < statement-1 >
   .
   .
   .
  < statement-N >

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性

1.2 类对象

类对象支持两种操作:属性引用和实例化。属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

>>> class  Myclass:
...     i=12345
...     def  f(self):
...         return 'hello,world!'
...
>>> x=Myclass()
>>> #访问类的属性和方法
... print("Myclass类的属性i为:",x.i)
Myclass类的属性i为: 12345
>>> print("Myclass类的方法f输出为:",x.f())
Myclass类的方法f输出为: hello,world!

1.3 类的方法

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。self代表类的实例,而非类。类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:

def init(self):
   self.data = []

类定义了 init() 方法,类的实例化操作会自动调用 init() 方法。如下实例化类 MyClass,对应的 init() 方法就会被调用:

x = MyClass()

当然, init() 方法可以有参数,参数通过 init() 传递到类的实例化操作上。例如:

>>> class  complex:
...     def  _init_(self,realpart,imgpart):
...         self.r=realpart
...         self.i=imagpart
...
>>> x=complex(1,2)
>>> print(x.r,x.i)
>>>1 2

以下是创建一个类的方法的实例:

>>> #类定义
... class people:
...     #定义基本属性
...     name = ''
...     age = 0
...     #定义私有属性,私有属性在类外部无法直接进行访问
...     __weight = 0
...     #定义构造方法
...     def __init__(self,n,a,w):
...         self.name = n
...         self.age = a
...         self.__weight = w
...     def speak(self):
...         print("%s 说: 我 %d 岁。" %(self.name,self.age))
...
>>> # 实例化类
... p = people('yeye',20,50)
>>> p.speak()
 yeye说:20 岁。

2、正则表达式

正则表达式是一个特殊的字符序列,它能帮助我们方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

2.1 正则表达式对象

re.RegexObject
re.compile() 返回 RegexObject 对象。
re.MatchObject
group() 返回被 RE 匹配的字符串。

  • start() 返回匹配开始的位置;
  • end() 返回匹配结束的位置;
  • span() 返回一个元组包含匹配 (开始,结束) 的位置。

2.2 正则表达式修饰符-可选标志

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

2.3 正则表达式模式

模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。多数字母和数字前加一个反斜杠时会拥有不同的含义。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。反斜杠本身需要使用反斜杠转义。由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r’\t’,等价于 \t )匹配相应的特殊字符

3、re模块

3.1 import语句

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

import module1[, module2[,… moduleN]

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端。

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。这看起来很像环境变量,事实上,也可以通过定义环境变量的方式来确定搜索路径。搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量。

4、datatime模块学习

5、http请求