0
点赞
收藏
分享

微信扫一扫

Python+Appium自动化测试-编写自动化脚本

时间过得很快,这么快就来到了最后一篇Python基础的学习了。话不多说直接进入这最后的学习环节吧!!!

期待有一天


1.闭包

什么是闭包?

答:

        Python闭包是一个函数,同时还保存了定义这个函数的环境(即在其被定义时存在的非局部变量)。换句话说,闭包是一个函数,它可以记住并访问它被定义时的所有变量和状态,即使在其被调用时,这些变量和状态不再存在于其当前环境中。闭包可以被用来隐藏数据,提供保护,并允许在函数中创建更高级别的功能

(1)简单闭包

(2)如何修改外部函数变量的值

(3)ATM级机小案例

(4)闭包优缺点

优点:

缺点:


2.装饰器

(1)什么是装饰器?

(2)装饰器的一般写法(闭包写法)

 

(3)装饰器的语法(糖写法)


3.设计模式

(1)什么是设计模式

(2)单例设计模式

 

# 测试类
from str_tools import str_tool

s1 = str_tool
s2 = str_tool

print(id(s1))
print(id(s2))


# 导入的类
class StrTools:
    pass

str_tool = StrTools()

(3)工厂设计模式
 

"""
    演示工厂模式
"""


class Person:
    pass


class Worker(Person):
    pass


class Student(Person):
    pass


class Teacher(Person):
    pass


class PersonFactory:
    def get_person(self, p_type):
        if p_type == 'w':
            return Worker()
        elif p_type == 's':
            return Student()
        else:
            return Teacher()

pf = PersonFactory()
worker = pf.get_person('w')
print(type(worker))
stu = pf.get_person('s')
print(type(stu))
tea = pf.get_person('t')
print(type(tea))


4.多线程

(1)进程,线程和并行执行

1.进程和线程

注意点:

2.什么是并行执行?

(2)多线程编程

1.什么是多线程编程,如何实现

2.小练习(没有传参)

代码示例:

"""
    多线程演示示例
"""
import time
import threading

def sing():
    while True:
        print("我在唱歌,呀啦嗦~~~~~~")
        time.sleep(1)


def dance():
    while True:
        print("我在跳舞,动次打次动次打次")
        time.sleep(1)

if __name__ == '__main__':
    # 唱歌线程
    sing_thread = threading.Thread(target=sing)
    # 跳舞线程
    dance_thread = threading.Thread(target=dance)

    # 线程工作
    sing_thread.start()
    dance_thread.start()

3.小练习(有传参)

"""
    多线程演示示例
"""
import time
import threading


def sing(msg):
    while True:
        print(msg)
        time.sleep(1)


def dance(msg):
    while True:
        print(msg)
        time.sleep(1)


if __name__ == '__main__':
    # 唱歌线程,使用元组传参
    sing_thread = threading.Thread(target=sing, args=("我要唱歌 哈哈哈", ))
    # 跳舞线程,使用字典传参
    dance_thread = threading.Thread(target=dance, kwargs={"msg": "我在跳舞,动次打次"})

    # 线程工作
    sing_thread.start()
    dance_thread.start()



5.网络编程

(1)服务端开发

1.初识socket

2.客户端和服务端

3.服务端开发主要分为一下几个步骤

"""
    服务端开发
"""
import socket
# 创建socket对象
socket_server = socket.socket()
# 绑定socket_server到指定IP和地址
socket_server.bind(("127.0.0.1", 8888))
# 服务端开始监听端口,参数为允许链接的数量
socket_server.listen(1)
# 接收客户端连接,获得连接对象
# 返回的是一个二元组,可以使用两个变量接收
# 返回的分别是连接对象和客户端地址信息
# accept()是阻塞的方法,也就是如果没有客户端连接,就会卡在这里等待
conn, address = socket_server.accept()

print(f"接收客户端连接,连接来自:{address}")

while True:
    # 发送客户端消息
    # recv接收的参数是缓冲区大小,一般赋值1024
    # 返回值是一个字节数组bytes,通过decode方法转换为字符串对象
    data: str = conn.recv(1024).decode("UTF-8")

    print(f"客户端发来消息是:{data}")

    # 发送回复消息
    # 通过encode,将字符串编码为字节数组
    msg = input("请输入回复消息")
    if msg == 'exit':
        break
    conn.send(msg.encode("UTF-8"))

# 关闭链接
conn.close()
socket_server.close()

(2)客户端开发

"""
    客户端开发
"""
import socket
# 创建socket对象
socket_client = socket.socket()
# 连接到服务端
socket_client.connect(("127.0.0.1", 8888))

while True:
    # 发送消息
    msg = input("请输入要被服务端发送的消息")
    if msg == "exit":
        break
    socket_client.send(msg.encode("UTF-8"))
    # 接收返回消息
    # 同样是阻塞的
    recv_data = socket_client.recv(1024)
    print(f"服务端回复的消息是:{recv_data.decode('UTF-8')}")

# 关闭链接
socket_client.close()



6.正则表达式

(1)基础匹配

1.什么是正则表达式

2.正则的三个基础方法

代码示例:

"""
    演示正则表达式的三个基础方法
"""
import re

s1 = "mmm wakanda"
# match方法 从头匹配,头部匹配不到会返回none
result1 = re.match("mmm", s1)
print(result1)
print(result1.span())
print(result1.group())
# 分别打印
# <re.Match object; span=(0, 3), match='mmm'>
# (0, 3)
# mmm

print('------------')

s2 = "a python haha python"
# search方法 搜索匹配
result2 = re.search("python", s2)
print(result2)
print(result2.span())
print(result2.group())

print("--------")

s3 = "a python haha python la la la python python"
# findall 方法 搜索全部匹配
result3 = re.findall("python", s3)
print(result3)


(2)元字符匹配

1.单字符匹配

2.数量匹配

3.边界匹配

4.分组匹配

5.案例

代码示例:

"""
    案例
"""
import re

# 匹配账号,只能由字母和数字组成,长度限制6到10位
# 在正则表达式里千万不要带空格了
r1 = '^[0-9a-zA-Z]{6,10}$'
s01 = '123456789012345'
s02 = '12345678'
s03 = '12345678_'
print(re.findall(r1, s01))
print(re.findall(r1, s02))
print(re.findall(r1, s03))


print("--------------")
# 匹配QQ号,要求纯数字,长度5-11,第一位不为0
r2 = '^[1-9][0-9]{4,10}$'
s11 = '012345678'
print(re.findall(r2, s11))

# 匹配邮箱地址,只允许qq,163,gmail这三种邮箱格式
# {}.{}@{}.{}.{}
# 123.354.456@qq.com
# 123@qq.com
r3 = '(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
s31 = 'a.b.c.e.f.g@qq.com.a.c.e'
s32 = 'a.b.c.e.f.g@126.com.a.c.e'
print(re.match(r3, s31))
print(re.match(r3, s32))


7.递归

或者是例如在算法的二叉树那里,遍历二叉树很多操作都可以使用递归完成

例如:实现x的n次幂,使用递归实现

def power(x, n):
    if n == 0:
        return 1
    else:
        return x * power(x, n-1)

print(power(2, 3))

 


结语

好了有关python的全部基础内容就全部结束了,大家在学习完Python基础之后是不是感觉到了无限的快乐呐^_^

离成功又进一步~~~~!!!!!!

\(^o^)/欧耶~!

再见ヾ( ̄▽ ̄)Bye~Bye~

举报

相关推荐

0 条评论