当前位置: 首页 > news >正文

买网站网片

买网站,网片,网站com域名上不去cn能,wordpress导入网页文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改 在闭包中的…

文章目录

  • python高级基础
    • 闭包
    • 修饰器
    • 单例模式跟工厂模式
      • 工厂模式
      • 单例模式
    • 多线程多进程
    • 创建websocket
      • 服务端
      • 手写客户端

python高级基础

闭包

简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改
在闭包中的内部函数如果要修改外部变量就要借助nonlocal关键字

def outer(num1):def inner(num2):nonlocal  num1num1+=num2print(num1,num2)return inner
fn=outer(10)
fn(10) # 20
fn(10)  # 30

修饰器

闭包修饰器语法

def outer(fn):def inner():print('我睡觉了')fn()print('醒了')return innerdef sleep():import randomimport  timeprint('睡眠中。。。')time.sleep(random.randint(1,5))fn1=outer(sleep)
fn1()

注意看加粗的两个地方是语法糖 实际原理还是用的是闭包
在这里插入图片描述

单例模式跟工厂模式

工厂模式

优点:创建出来的每个对象都是独立的地址
缺点:部分属性不一致,但是都是独立的内存,消耗内存性能

class Person:pass
class Student(Person):pass
class Worker(Person):pass
class Teacher(Person):passclass PersonFac:def get_person(self,type):if(type=='s'):return Student()elif(type=='w'):return Worker()else:return Teacher()pf=PersonFac()
worker=pf.get_person('w')
stu=pf.get_person('s')
teacher=pf.get_person('t')print(worker,stu,teacher)

在这里插入图片描述

在这里插入图片描述

单例模式

实例化类,然后在这个单例类上面进行添加删除

# class Stu:
#     pass
#
# t1=Stu()
# t2=Stu()
# print(id(t1))   # 1755386051920
# print(id(t2))  # 1755386051984# 单例写法  工作中常把创建类单独提出文件 然后引入
class Stu:passt1=Stu()s1=t1
s2=t1
print(id(s1))   # 1790597823824
print(id(s2))  # 1790597823824

多线程多进程

以下代码是单线程执行,最终输出结果是一直执行sing方法因为是无限循环的

import timedef sing():while True:print('我在唱歌。。。')time.sleep(1)def dance():while True:print('我在跳舞。。。')time.sleep(1)if __name__=='__main__':sing()dance()

在这里插入图片描述


def sing(msg):while True:print(msg)time.sleep(1)def dance(msg):while True:print(msg)time.sleep(1)if __name__=='__main__':singThread=threading.Thread(target=sing,args=('我要唱歌',))  # 使用Thread方法开启线程  参数要一一对应不然就会跑到第一个参数所以这边使用具名参数danceThread=threading.Thread(target=dance,kwargs={'msg':'我在跳舞'})singThread.start()   #  线程启动danceThread.start()

这里面2个注意点

  • 以元祖形式传参,一个参数别忘了逗号
  • 以字典形式传参,参数要与方法参数一一对应不然会报错,参数名也不能变
    在这里插入图片描述

创建websocket

服务端

import socket
# 创建socket对象
socket_server=socket.socket()
# 绑定ip地址和端口
socket_server.bind(("localhost",8888))# 千万注意这里的传参是元组
# 监听端口
socket_server.listen(1)
# listen接收一个整数传参数,表示接收的链接数量# 等待客户端链接
# result:tuple=socket_server.accept()
# conn=result[0]  # 客户端和服务端的链接对象
# address=result[1]  # 客户端的地址信息
# 简写
conn,address =socket_server.accept() # 返回的是二元元祖(连接对象,客户端地址信息)
# 此方法是阻塞的 accept 如果没有链接下面的代码不执行print(f'接收到了{address}')
# 无线循环发消息 ,最终根据最后逻辑进行跳出自行解决
while True:data:str=conn.recv(1024).decode('GBK')print(f'客户顿发来的信息是{data}')msg=input('发送信息').encode("GBK")conn.send(msg)#关闭链接
conn.close()
socket_server.close()

如果报这种错说明你的数据不是utf-8的格式就可以打印出信息进行转换对应的格式

这种是GBK格式,自行百度

在这里插入图片描述
在这里插入图片描述
最终实现的效果

手写客户端

import socket
# 创建socket对象
socket_client=socket.socket()
# 绑定ip地址和端口
socket_client.connect(("localhost",9999))
while True:msg=input('请输入')socket_client.send(msg.encode('UTF-8')) # 输入信息转换recv_data=socket_client.recv(1024) #  recv缓冲区1024即可  单线程阻塞print(f'服务端返回的信息四{recv_data.decode("UTF-8")}')
socket_client.close()
http://www.yayakq.cn/news/132041/

相关文章:

  • 龙华营销型网站费用岳阳建设企业网站
  • 锦州网站建设多少钱怎么搜索到自己网站
  • 如何使用win2008iis建设网站seo代码优化包括哪些
  • 网站建设 上海网站建设太原房产网站建设
  • 公司网络组建方案选一个网站做seo
  • 谷歌做新媒体运营的网站网络公司网站制作岗位职责
  • 个人办公室装修效果图南昌seo营销
  • 凡科建站代理入口内蒙古网站设计
  • 西安做网站微信公司哪家好wordpress 密码验证失败
  • 贵阳网站建设q.479185700棒网站服务器证书过期怎么解决
  • 有关外贸的网站有哪些内容wifi管理系统登录入口
  • 网站建设 万网 域名微信网站改版价格
  • 厦门建网站费用一览表网上免费logo设计
  • 网站的开发环境设计大连网络公司排名
  • 表白网站源码大全网络营销策划方案基本思路
  • 哪做网站比较好社交网站开发注意事项
  • 菏泽网站建设公司蓝希科技广西网站建设哪家好
  • 网站广告收入如何缴文化事业建设费卖机器的网站怎么做
  • 古典 网站 模板企业公示信息查询系统吉林
  • 建筑企业登录哪个网站pos机网站建设方案
  • 一般做网站的在哪里找怎么在dw里做网站
  • wordpress首页生成静态页面抖音seo关键词排名技术
  • 邯郸移动网站建设费用重庆市招投标公共资源交易中心
  • 企业网站建设软件没有网站怎样做外贸
  • 织梦怎么做淘客网站网站备案主体负责人
  • 南通网站建设优化公司深圳招聘网官网
  • 汕头网站建设网站建设百度做网站续费费用
  • 深圳返利网站开发便宜的手机网站建设
  • 毕设代做网站招聘中山网站建设方案报价
  • linux系统服务器怎么做网站微信小程序怎么制作免费