Python基础(二)

1、文件读写

文本模式

通过内置函数open,进行文件读写
mode参数:

  • r:只读
  • w:只写
  • a:追加

如下所示:

#文件路径,w只写模式,字符编码
f = open('temp.txt','w',encoding='utf-8')
#write方法,写入字节串
f.write('残破的石窟,千年的羞辱,遮蔽了日出')
#操作完毕,使用close方法关闭文件对象
f.close()

如下所示:

f=open('temp.txt','r',encoding='utf-8')
# 读取3个字符
content=f.read(3)
f.close()
# 打印出来
print(content)

二进制模式

读写文件底层操作读写的都是字节

如下所示:

# mode参数指定为rb 就是用二进制读的方式打开文件
f=open('temp.txt','rb')
content=f.read()
f.close()
# 打印出来字节
print(content)

with语句

with语句是Python引入的一种与异常处理相关的功能,它可以看做是对try…finally语句的简化;
使用with语句打开文件,就不需要调用close()方法关闭文件,解释器会自动调用;
对文件的操作都放在with下面的缩进的代码块中

如下所示:

# open返回的对象 赋值为 变量 f
with open('temp.txt') as f:
    linelist = f.readlines() 
    for line in linelist:
        print(line)

写入缓冲

执行该程序时,执行完写入文件内容后,会等待30秒,再关闭文件对象;
运行write方法写入字节到文件中的时候,其实只是把这个请求提交给 操作系统;
操作系统为了提高效率,通常并不会立即把内容写到存储文件中,而是写入内存的一个缓冲区;
等缓冲区的内容堆满之后,或者程序调用close关闭文件对象的时候,再写入到文件中

如下所示:

f = open('temp.txt','w',encoding='utf-8')
f.write('残破的石窟,千年的羞辱,遮蔽了日出')
# 等待 30秒,再close文件
import time
time.sleep(30)
f.close()

如果希望在调用write之后,立即把内容写到文件里面,可以使用文件对象的flush方法

如下所示:

f = open('temp.txt','w',encoding='utf8')
f.write('残破的石窟,千年的羞辱,遮蔽了日出')
# 立即把内容写到文件里面
f.flush()
# 等待 30秒,再close文件
import time
time.sleep(30)
f.close()

2、自定义类

类是一个函数包。类中可以放置函数和变量,然后类中的函数可以很方便的使用类中的变量
如下所示:

整数对象   的类型是   int
字符串对象 的类型是   str
列表对象   的类型是   list
元组对象   的类型是   tuple
字典对象   的类型是   dict

定义一个类用关键字class后面加类的名称;
类名的规范和变量命名规范一样。通常我们会把类名首字母大写
如下所示:

# 定义一个类,类里面有方法(方法就是函数)
class Cal():
# 定义函数 加减乘除
    def __init__(self,first,second):
        # 提前声明变量
        self.first=first
        self.second=second
    def  add(self):
        result = self.first + self.second
        return result
        # print(result)
    def  minus(self):
        result = self.first - self.second
        return result

    def  multi(self):
        result = self.first * self.second
        return result

    def  div(self):
        result = self.first / self.second
        return result

我们需要调用这个类,就需要实例化一个对象,调用这个类;
类就相当于一个集合,变量是共有的

如下所示:

from test0606.getRequest import Cal

ca = Cal(3,5)  # 实例化一个对象,就相当于派了一个代表,可以调用类的权利。
result = ca.minus() # 调用函数

print(result)

初始化方法__init__

解释器在执行实例化类对象的代码时;
首先,解释器会在内存中创建一个该类的实例对象;
然后,解释器会查看这个类是否有 __init__方法,如果有,就会去调用它;
__init__是创建好实例后立即就要执行的方法,所以称之为初始化方法;
通常我们会在__init__方法里面 执行一些初始化的动作,主要就是创建该实例的实例属性

init 方法的第一个参数self

解释器执行实例化代码,会先在内存中创建该类实例对象,然后调用类的__init__方法;
调用 __init__方法时,就将实例对象传递给self参数

定义返回值return

如果函数内部没有写return,那么就没有返回值,打印出来的只是空值none
为什么有的时候,返回的是none,就需要去查看一下函数有没有返回值

调试函数main

只是用来调试的,在函数被调用的时候,不会运行

如下所示:

if __name__ == '__main__':
    ca = Cal(3,6)
    result = ca.add()
    print(result)

3、异常except

解释器执行代码过程中,如果发生异常,就会导致解释器没法继续按照正常流程往下执行代码,所以解释器会结束当前代码的执行;
如果预料到了某些代码运行时可能出现某些异常,就可以使用 try…except… 这样的方法来捕获和处理异常

使用多个except代码段,分别捕获多种类型的异常

如下所示:

try:
    choice = input('输入你的选择:')
    if choice == '1':
        100/0
    elif choice == '2':
        [][2]
except ZeroDivisionError:
    print ('出现 ZeroDivisionError')
except IndexError  :
    print ('出现 IndexError')

获取异常对象

运行代码的时候,当try中的语句产生异常对象时,就会把产生的异常对象赋值给as后的变量
如下所示:

try:
    100/0
except ZeroDivisionError as e:
    print (f'异常对象信息:{e}')

匹配所有异常

如下所示:
所有的异常都是Exception的子类。 所以Exception能匹配所有类型的异常

try:
    100/0
except Exception as e:
    print('未知异常:', e)

except 后面没有写异常的类型,也表示匹配所有的异常
如下所示:

try:
    100/0
except:
    print('未知异常:')

如果我们想知道异常的详细信息,可以使用traceback模块
如下所示:

import traceback

try:
    100/0
except :
    print(traceback.format_exc())

4、pycharm调试打断点

报错遇到问题,打断点,然后用debug模式调试;
有两种类型的bug: 语句错误和逻辑错误;
打断点:设置某些代码行位置,当程序运行到这些位置,就会暂停执行;
Pycharm要设置断点非常简单,在要设置断点的代码左边边框上,点击一下鼠标就可以;
设置好了后,就会出现上图所示的一个红点。
接下来,代码编辑界面,右键点击鼠标,选择debug 调试运行程序
如下所示:
打断点

print出关键变量的值

直接用代码打印出关键变量的值

5、requests介绍

requests是用来发起请求的,它可以发起get请求,也可以发起post请求
这个模块是没有的,需要手动安装

安装requests模块

如下所示:
requests

发起请求get

import requests
#调登录接口
def login():
    url = 'http://127.0.0.1:8888/login'
    res = requests.get(url)
    print(res.text)

login()

发起请求post

import requests

def login():
    url="http://127.0.0.1:8988/login"
    data={
        "username":"admin",
        "password":"123456"
    }
    res=requests.post(url=url,data=data)
    print(res.json())

login()

requests里面的属性

text:打印响应的文本
JSON:响应体不是JSON,就不能用JSON,只针对响应体是JSON才可以调用
url:打印url
cookies:直接可以取出来的。
encodeing:编码格式
content:上下文,通过十六进制打印的b开头,对content进行解码打印出中文
headers:响应头
statue_code:状态码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值