Python 基础 11-Python 技术领域

Python 技术领域

  • 网站 Web 开发
  • App 后端开发
  • DevOps 运维开发:运维专业知识、一些第三方工具的使用
  • 爬虫开发:beautiful soap/Scrapy
  • 黑客技术: 计算机基础原理、黑客工具使用
  • 数据科学:取数据、展示数据

Python-Technology-Field

Python 基础 10-异常处理

异常处理

  1. 编写错误的代码会导致异常
  2. 为了让我们了解发生了什么,Python 会抛出一个异常对象。
  3. 异常对象也有类型,它的类型也有父类型,最终继承于基类 Exception。

Python-Exception-Class

try except else 语句


try:
    一段可能出错的代码             # 一般容易出错的场景:网络请求、读写写入、处理与外部系统的交互
except ValueError as e:           # 把 ValueError 类型的异常对象赋值给变量 e
    print(e)                      # 处理这个异常,当使用 print 打印 e 这个异常对象时,e 这个变量变成字符串,包含描述信息
except Exception:
    处理其余所有的异常
else:
    没有异常时的处理代码

except 捕获异常的语句可以有任意多个,同 else 语句一起是互斥的。

try finally 语句


try:
    一段可能出错的代码
finally:
    最后一定会执行的代码,         # 无论前面代码是否出错,最后一定会执行的代码,
    例如 f.close()                # 常用场景是关闭网络、关闭文件等
    

抛出异常 rasie 语句

rasie e

捕获到异常时,如果不想处理,想让更外层代码知道(因为代码是通过函数一层层调用的), 可以使用 rasie 语句来抛出异常到外层。


try:
    int("a")
except ValueError as e:
    print(e)
    raise(e)

Python 基础 09-文件处理

写入文件


poem = '''\
Programming is fun,
When the work is done.
If you wanna make your work also fun:
    Use Python!
'''

f = open('poem.txt', 'w')           # 打开文件的方式:r/w/a,open 方法返回值是一个文件描述符,赋值给 f
                                    # 文件描述符可以理解成一个表示文件的对象
f.write(poem)                       # write text to file
f.close()                           # close the file,打开文件后一定要关闭,如果不关闭,会占用系统的文件描述符资源

读取文件


f = open('poem.txt')                # 默认为 r 模式
while True:
    line = f.readline()
    if len(line) == 0:              # 空行表示读取结束
        break
    print(line, end = "")           # print 内容后面默认会增加一个 \n,这里 end 禁止结尾增加 \n,改为增加 ""
f.close()                           # close the file

使用 with 语句后 Python 自动关闭文件

使用 with 语句后,不用使用 close 方法关闭文件了。


poem = '''\
Programming is fun,
When the work is done.
If you wanna make your work also fun:
    Use Python!
'''

# 写入文件

with open('poem.txt', 'w') as f:
    f.write(poem)
    
    
# 读取文件

with open('poem.txt') as f:
    while True:
        line = f.readline()
        if len(line) == 0:      
            break
        print(line, end = "")

Python 基础 08-类和对象

类和对象(实例)

之前我们学习了函数和模块等组织代码的方式,但随着代码的增多,函数和模块还是不够用。
根据有项研究,如果代码超过 10000 行,如果只用函数和模块来组织代码,那么程序员将很难掌控代码。 所以在大型项目中,为了更好地组织代码,会使用类和对象。

类和对象之间的关系非常相似于概念和实体的关系。

Python-Class-Object

创建类


class Cat(object):                      # 定义概念 猫:       PS: 注意使用 class 关键词,Python 3 中不需要"(object)"
    leg_cnt = 4                         # 腿数 = 4        PS: 可以做为类属性
    def __init__(self, cat_name):       # 定义 创建过程(实体,猫名):   PS: 实例的创建过程,类的实例化,第一个参数 self 是必须的,  
                                        # self 可以理解为类实例化时的已经存在的初始实体对象,很多属性还没有被设置
        self.name = cat_name            # 实体.名字 = 猫名  PS: 给实体设置 name 属性,同时将传入的参数 cat_name 赋值给它
                                        # name 这个变量是附属于 self 实例的(self.name),不能够直接使用 name 变量
    
    def change_name(self, cat_name):    # 定义 改名字(实体,猫名):  PS: 类里面的函数就叫类的方法,第一个参数是 self,类的方法实际上定义类这个概念能做什么
        self.name = cat_name            # 实体.名字 = 猫名
    
    def climb(self):                    # 定义 爬树(实体):
        print("cat %s climb a tree" %   # 输出 (猫爬了树)
        self.name)

创建并使用实例


tom = Cat("Tom")                # 类的实例化,Cat 实例化后赋值给 tom 这个变量,tom 是一只真正的猫,它的名字叫"Tom"
tom.chang_name("ATom")          # tom 改名字为 "ATom"
tom.climb()                     # tom 去爬树
tom.leg_cnt == 4                # True tom 的腿数是 4

类的继承

继承的类叫做子类。


class PersianCat(Cat):              # 定义概念 波斯猫(继承猫):
    def __init(self, cat_name):     # 定义 创建过程(实体,猫名):
        super(PersianCat, self).__init__(cat_name)  # 执行猫的创建过程(猫名),Python 3 中"PersianCat, self"可不写
    
    def jump(self):                 # 定义 跳(实体):
        print("try jump")           # 打印 ("try jump")

jack = PersianCat("jack")           # jack 是一只真实的波斯猫
jack.jump()                         # jack 跳    
jack.climb()                        # jack 爬树
        

Ref

Python 面向对象
Python 笔记——类定义

Python 基础 07-高级数据类型

元组

  1. 与列表很相似,定义为 (1, “123”, 56)
  2. 不同的是,元组是不能改变的,类似于常量,元组是不能增加或删除元素的
  3. (2) 其实 2,”()” 理解成数学上的括号,(2,) 是元组,里面只有一个元素

字典

字典表示的是一种映射关系。 以下就是一个字典。


{
    "123": 123,
	456: "hello"

}

冒号左边称为键(Key),它是一个常量,右边称为值(Value)。


a = {"123": 123, 456: "hello"}
a["123"]    # 字典取值,得 123	
a[456] = "world"    # 字典设置值

  • 字典中的值是可以修改的
  • 字典有个特性是:取值和设置值速度非常快

字符串

字符串其实是一个特殊的列表,列表中的每个元素是一个字符

字符串替换


a = "hello lilei"
a[:5]   # "hello",字符串本质上是常量,可以查询,不能修改

a = "hello %s" % "lilei"    # %s 为占位符
a = "%s %s" % ("hello", "lilei")
a = "%(verb)s %(name)s" % {"verb": "hello", "name": "lilei"}    # 给占位符起名

元组在函数中的应用

当一个函数返回多个值的时候,它实际上返回了一个元组。

一个元组中的多个元素分别赋值给对应的变量称为解包。

如下:


a, b = (1, 2)   # 元组解包
param = (1, 2)  # 定义一个元组

add(*param)  add(1, 2)一样,*param 对应到了位置参数

可以使用字典来对应关键字参数
param = {"a": 1, "b": 2}    # 定义一个字典
add(**param)  add(a = 1, b = 2)一样,**param 对应到了关键字参数