Python高级技术复习指南

这篇具有很好参考价值的文章主要介绍了Python高级技术复习指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1.正则表达式

        正则表达式这一块主要还是利用re模块和正则表达式结合去进行一个指定字符串的提取,我们首先需要了解到的就是元字符

Python高级技术复习指南,python,pyqt

我们并不只有re.findall这一个方法,还有一个match对象方法以及flag参数也要一并复习

因为是简单复习,所以我们来举几个例子:

eg1:

有一批网址:

http://www.interoem.com/messageinfo.asp?id=35

http://3995503.com/class/class09/news_show.asp?id=14

http://lib.wzmc.edu.cn/news/onews.asp?id=769

http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://www.fincm.com/newslist.asp?id=415

需要正则后为:

http://www.interoem.com/ 
http://3995503.com/ 
http://lib.wzmc.edu.cn/ 
http://www.zy-ls.com/  

import re
strings = '''http://www.interoem.com/messageinfo.asp?id=35
http://3995503.com/class/class09/news_show.asp?id=14
http://lib.wzmc.edu.cn/news/onews.asp?id=769
http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://www.fincm.com/newslist.asp?id=415'''
ex = "(http://.*?/).*?"#这里主要的难点就在于找出合适的正则表达式
for each in re.findall(ex,strings):
    print(each)

这里还有一个‘子组’的概念:如果在正则表达式中包含括号,则只会匹配出括号也就是子组中的内容,这个还是要简单记一下的

eg2:

利用正则表达式匹配出字符串中s=”(hello world), zha(Tom)” 括号中的内容

re.findall(r’\(.+?\)’,s)

这里包含到了转义字符, ’\(‘就可以进行括号的识别,否则会被认为是子组

2.PyQt-GUI编程

        在Qt这里小题主要会考你某一个控件的作用,比如问你QMessage是干什么的等等,还有很多控件需要了解和去用,

比如:

  1. QLabel:用于显示文本或图像的标签
  2. QPushButton:用于点击的按钮
  3. QCheckBox:复选框控件,可以选择和取消选择
  4. QRadioButton:单选按钮控件,只能选择一个选项
  5. QLineEdit:用于输入和编辑单行文本的文本框
  6. QTextEdit:用于编辑和显示多行文本的文本框
  7. QComboBox:下拉列表框,提供一个选择列表
  8. QSlider:滑动条控件,用于选择范围内的一个值
  9. QProgressBar:进度条控件,用于显示任务的完成进度
  10. QSpinBox:数字选择框,用于选择整数值
  11. QDateTimeEdit:日期和时间编辑框,用于选择日期和时间
  12. QTableView:表格视图控件,用于显示和编辑表格数据
  13. QTreeView:树状视图控件,用于显示树形结构的数据
  14. QListView:列表视图控件,用于显示项目列表
  15. QTabWidget:选项卡控件,用于创建多个页面
  16. QMenuBar和QMenu:菜单栏和菜单控件,用于创建菜单
  17. QGraphicsView:图形视图控件,用于显示和编辑图形元素
  18. QWebEngineView:Web浏览器控件,用于显示网页内容

大题还是主考代码:

eg1:假如你有一个已经pyuic的.py文件,想对其进行一系列操作我们通常就是采用下面这种方法:定义一个类去进行操作

这里简单说一下信号和槽的链接:

第一点:假如你设计的ui界面中有pushButton这个控件,想对他进行连接就直接self.pushButton......等等,如果是LineEdit(单行文本),就直接self.LineEdit......,当然注意顺序,可能是pushButton_2等等,名称写对就可以

第二点:槽函数是不需要写括号的,像下面展示的prn函数就不需要括号

from PyQt5 import QtWidgets
from signal_slot import Ui_Form
import sys
class My_signal_slot(QtWidgets.QWidget,Ui_Form):
    def __init__(self):
        super(My_signal_slot, self).__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.prn)
    def prn(self):
        print("打印测试")
if __name__=="__main__":
    app=QtWidgets.QApplication(sys.argv)
    main=My_signal_slot()
    main.show() 
    sys.exit(app.exec_())

 Qt的大题应该就是这个模板,根据题干去加相应的功能即可

3.数据库编程

        数据库编程主要还是将数据库与python(pycharm)连接起来使用,基本的sql语句

比如:

  1. 创建数据库: CREATE DATABASE database_name;

  2. 切换到数据库: USE database_name;

  3. 创建表: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype );

  4. 插入数据: INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);

  5. 查询数据: SELECT column1, column2, column3 FROM table_name WHERE condition;

  6. 更新数据: UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

  7. 删除数据: DELETE FROM table_name WHERE condition;

  8. 删除表: DROP TABLE table_name;

  9. 删除数据库: DROP DATABASE database_name;

在SqlServer中应该也都滚瓜烂熟了,这里简单提一嘴不多赘述。

接下来就是数据库与python的连接代码,大题应该会考:

以下就是数据库与python连接的常用代码了,比较重要的语句是cur.execute语句,在对数据库的操作中将sql语句作为参数填充进去之后就可以执行相应的效能

import pymysql
db=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',database='stu',charset='utf8')
#获取游标,创建游标对象
cur=db.cursor()
#数据操作
cur.execute("insert into class_1 VALUES (4,'Emma',12,'m',86);")
#将修改内容提交到数据库
db.commit()
#关闭游标和数据库连接
cur.close()
db.close()

当然传参也可以传变量参数,

cur.execute("insert into class_1 values ('%s',%d,'%s',%f);"%(name,age,sex,score))
#或者
cur.execute("insert into class_1 values ('%s',%s,'%s',%s);",(name,age,sex,score))

这两种都可以,第一种是常见的python占位符传参,第二种是数据库独有的占位符传参,只需全部传入%s字符型的参数,语句会根据表中每个属性的类型进行自动类型转换,说简单就是,你只管传%s,他自己会变的。 

还有一点是关于查询出的数据的遍历,使用的是cur.fetchall(),cur.fetchone()等函数也需要复习到,fetchall使用的更广泛些,返回的为元组嵌套

4.网络编程

        网络编程主要就是依靠套接字Socket来实现的,基本就以下几步:

               (1) 创建服务器套接字;

               (2) 使用bind()方法绑定;

               (3)调用listen()方法去监听某个特定的地址

               (4) 使用accept()方法接受客户端的连接

               (5) 利用套接字的两个方法:send()用于发送数据recv()用于接收数据);

               (6) 关闭套接字。

        但是需要注意的是在网络编程中有两个协议:TCP和UDP,二者区别就在于:TCP更安全,UDP更方便

接下来我们针对TCP和tUDP的Server(服务器)和Client(客户端)进行代码演示:

TCP_Server:

import socket
sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#bind方法绑定
sockfd.bind(('0.0.0.0',8888))
#监听队列,这里代表可以同时连接5个客户端
sockfd.listen(5)
print('Waiting for connect....')
while True:
    print('Waiting for receive....')
    #接受客户端的连接
    connfd,addr = sockfd.accept()
    print('Connect from ',addr)
    while True:
        #recv接收数据,数字为接受的最大字节数
        data = connfd.recv(1024)
        if not data:
            break
        print('Receive data:'+data.decode())
        send_data = input('请输入你需要发送的内容:')
        #send发送数据
        connfd.send(send_data.encode())
    connfd.close()
sockfd.close()

TCP_Client:

from socket import *
sockfd = socket()
sercer_addr = ('127.0.0.1',8888)
#connect进行连接
sockfd.connect(sercer_addr)
while True:
    print('Waiting........')
    send_data = input('请输入需要发送的信息:')
    if not send_data:
        break
    #send发送信息
    sockfd.send(send_data.encode())
    data = sockfd.recv(1024)#recv接收信息,recv中的数字代表接受的最大字节数
    print('From server:',data.decode())
sockfd.close()

 UDP_Server:

from socket import *
sockfd = socket(AF_INET,SOCK_DGRAM)
server_addr = ('0.0.0.0',8888)
#bind绑定
sockfd.bind(server_addr)
print("Waiting for connect....")
while True:
    print('Waiting for receive....')
    #recvfrom接收
    data,addr = sockfd.recvfrom(1024)
    print('Receive data:'+ data.decode())
    str_data = input("请输入需要发送的信息:")
    #sendto发送
    sockfd.sendto(str_data.encode(),addr)
sockfd.close()

UDP_Client:

import socket
from socket import *
addr = ('127.0.0.1',8888)
sockfd = socket(AF_INET,SOCK_DGRAM)
while True:
    data = input("请输入需要发送的信息:")
    #sendto发送
    sockfd.sendto(data.encode(),addr)
    #recvfrom接收
    msg,addr = sockfd.recvfrom(1024)
    print('From Server : '+msg.decode())
sockfd.close()

 TCP和UDP的服务器流程对比:左为TCP,右为UDP,可以看出二者比较下来UDP的流程要更少一些

Python高级技术复习指南,python,pyqtPython高级技术复习指南,python,pyqt

 TCP和UDP客户端流程对比:左TCP右UDP,可以看出二者客户端大差不差但还是UDP简洁一步

Python高级技术复习指南,python,pyqtPython高级技术复习指南,python,pyqt

 通过对比我们还可以发现,TCP中发送使用的是send,接收为recv,而在UDP中发送为sendto,接收为recvfrom,这也是二者之间较大的区别

网络编程小结

TCP:安全,但复杂,发送为send,接收为recv

UDP:不安全,但简便,发送为sendto,接受为recvfrom,服务器端:不用listen和accept,客户端不用connect

5.文件操作

        文件也是很有可能考大题的,但是不会单独出一个大题去考文件,而是可能会和网络编程和Qt结合起来去考一个或两个大题

Python 中的文件操作主要涉及打开文件、读写文件内容以及关闭文件。以下是这些操作的详细介绍和常用函数。

1. 打开文件

首先,使用 open() 函数来打开一个文件

file = open('example.txt', 'r')  # 打开文件以读取

open() 函数的常用模式:

  • 'r': 读模式(默认)
  • 'w': 写模式(会先截断文件)
  • 'x': 独占创建模式,如果文件已存在会抛出异常
  • 'a': 追加模式,写入到文件的末尾
  • 'b': 二进制模式
  • 't': 文本模式(默认)
  • '+': 更新(读写)模式

2. 读取文件内容

读取整个文件:read()

读取行:readline()或者readlines()

content = file.read()  # 读取整个文件
print(content)

line = file.readline()  # 读取一行
print(line)

all_lines = file.readlines()  # 读取所有行到一个列表中
print(all_lines)

3. 写入文件

在写入模式下('w', 'a'等),可以使用以下方法:

写入:write()

写入字符串序列:writelines()

file = open('example.txt', 'w')  # 以写入模式打开
file.write("Hello, World!")  # 写入内容

lines = ["First line", "Second line"]
file.writelines(lines)  # 写入多行

4. 关闭文件

file.close()

5. 使用 with 语句操作文件

为了更好的管理文件的打开和关闭,通常使用 with 语句,它可以在代码块执行完毕后自动关闭文件。

with open('example.txt', 'r') as file:
    for line in file:
        print(line, end='')

到这里基本上就够用了,主要还是记住open函数中的常用模式就可以,别的直接操作就行,没有什么难的,其次注意与Qt或网络编程的链接考题,努努力总能会的。 文章来源地址https://www.toymoban.com/news/detail-809520.html

到了这里,关于Python高级技术复习指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL Server】数据库开发指南(八)高级数据处理技术 MS-SQL 事务、异常和游标的深入研究

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月07日
    浏览(64)
  • 【深入浅出Selenium库的百变玩法】: 掌握Web自动化测试的关键技术和策略,包括元素定位、页面操作、动态内容处理等,适用于初学者和高级开发者的综合指南

    Selenium是一个功能强大的库,支持多种高级操作,如处理多窗口、多标签页、键盘与鼠标事件、滚动操作等。掌握Selenium可以大大提高Web应用的测试效率和覆盖范围。希望这篇文章能帮助你开启Selenium进行自动化测试的新篇章。 Selenium也是一个广泛使用的自动化测试工具,它支

    2024年02月20日
    浏览(41)
  • Java:高级技术讲解

    没有单元测试时是怎么测试代码的? Junit单元测试框架 优点: 单元测试的具体步骤: 常用注解: 这里我们采用Junit4的版本的注解,这个版本比较经典。 示例代码: 比如我们有一个StringUtil类,是我们写好的一个类:------也就是等待测试的类 我们要测试其中的方法,看看有

    2024年01月22日
    浏览(38)
  • Java高级技术(单元测试)

    一,概括     二,junit    三,案例 (1),实验类  (2),测试类   四,常见注解   五,案例 (1),测试类 (2),结果    六,常见注解注意:       junit5版本的注解名字与junit4不同

    2024年02月04日
    浏览(33)
  • 游戏引擎之高级动画技术

    当我们拥有各类动画素材(clips)时,要将它们融合起来成为一套完整的动画。 最经典的例子就是从走的动画自然的过渡到跑的动画。 1.1 线性插值 不同于上节课的LERP(同一个clip内不同pose之间),动画融合需要的线性插值是不同clip之间的插值。 以走-跑为例,可以用速度来

    2024年04月14日
    浏览(60)
  • 5 种高级 NodeJS 技术

    作为开发人员,我们都致力于打造高效、健壮且易于理解、修改和扩展的代码库。通过采用最佳实践和探索先进技术,我们可以释放 NodeJS 的真正潜力并显着提高应用程序的质量。在这篇文章中,我们将重点介绍 NodeJS 的五种高级技术。所以,系好安全带,我们要开车了,准备

    2024年02月09日
    浏览(23)
  • 高级路由技术案例

    1、静态ECMP和浮动静态路由配置实验: 2、浮动静态路由配置 案例内容与目标: 1、如何在路由器上配置静态ECMP 2浮动静态路由配置 案例组网图: 案例设备和器材: 两台路由器 两台PC 案例主要过程: 步骤一:建立物理连接 步骤二:ip地址配置: PCA配置: PCB: RTA: RTB: 步

    2024年02月02日
    浏览(30)
  • Java高级技术:单元测试、反射、注解

    目录 单元测试 单元测试概述 单元测试快速入门 单元测试常用注解 反射 反射概述 反射获取类对象 反射获取构造器对象 反射获取成员变量对象 反射获取方法对象 反射的作用-绕过编译阶段为集合添加数据 反射的作用-通用框架的底层原理 注解 注解概述 自定义注解 元注解

    2024年01月16日
    浏览(40)
  • java 高级面试题整理(薄弱技术)

    session 1.什么是session Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户

    2024年02月11日
    浏览(34)
  • GaussDB技术解读系列之高级压缩

    本文作者 华为云数据库GaussDB首席架构师 冯柯 数据压缩与关系数据库的结合,早已不是一个新鲜的话题,当前我们已经看到了各种各样数据库压缩的产品和解决方案。对于GaussDB来说,在今天引入数据压缩,究竟能够给客户带来什么不一样的价值,是过去一段时间我们一直在

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包