python高级基础

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

python高级基础

闭包

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

def outer(num1):
    def inner(num2):
        nonlocal  num1
        num1+=num2
        print(num1,num2)

    return inner
fn=outer(10)
fn(10) # 20
fn(10)  # 30

修饰器

闭包修饰器语法

def outer(fn):
    def inner():
        print('我睡觉了')
        fn()
        print('醒了')
    return inner

def sleep():
    import random
    import  time
    print('睡眠中。。。')
    time.sleep(random.randint(1,5))


fn1=outer(sleep)
fn1()

注意看加粗的两个地方是语法糖 实际原理还是用的是闭包
python高级基础,python,开发语言,javascript

单例模式跟工厂模式

工厂模式

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

class Person:
    pass
class Student(Person):
    pass
class Worker(Person):
    pass
class Teacher(Person):
    pass

class 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)

python高级基础,python,开发语言,javascript

python高级基础,python,开发语言,javascript

单例模式

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

# class Stu:
#     pass
#
# t1=Stu()
# t2=Stu()
# print(id(t1))   # 1755386051920
# print(id(t2))  # 1755386051984


# 单例写法  工作中常把创建类单独提出文件 然后引入
class Stu:
    pass

t1=Stu()

s1=t1
s2=t1
print(id(s1))   # 1790597823824
print(id(s2))  # 1790597823824

多线程多进程

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

import time


def sing():
    while True:
        print('我在唱歌。。。')
        time.sleep(1)


def dance():
    while True:
        print('我在跳舞。。。')
        time.sleep(1)

if __name__=='__main__':
    sing()
    dance()

python高级基础,python,开发语言,javascript


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个注意点

  • 以元祖形式传参,一个参数别忘了逗号
  • 以字典形式传参,参数要与方法参数一一对应不然会报错,参数名也不能变
    python高级基础,python,开发语言,javascript

创建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的格式就可以打印出信息进行转换对应的格式
python高级基础,python,开发语言,javascript
这种是GBK格式,自行百度

python高级基础,python,开发语言,javascript
python高级基础,python,开发语言,javascript
最终实现的效果文章来源地址https://www.toymoban.com/news/detail-658495.html

手写客户端

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()

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

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

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

相关文章

  • 掌握 JavaScript:从初学者到高级开发者的完整指南(一)

    掌握 JavaScript:从初学者到高级开发者的完整指南(一)

    html完成了架子,css做了美化,但是网页是死的,我们需要给他注入灵魂,所以我们需要学习JavaScript,这门语言会让我们的页面能够和用户进行交互。 同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式: 第一种方式 :内部脚本,将

    2024年02月07日
    浏览(16)
  • 掌握 JavaScript:从初学者到高级开发者的完整指南(三)

    掌握 JavaScript:从初学者到高级开发者的完整指南(三)

    BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作BOM对象的相关属性或者函数来完成。例如:我们想要将浏览器的地址改为 http://www.baidu.com ,我们就可以通过BOM中提供的

    2024年02月06日
    浏览(16)
  • 自动化理论基础(2)—开发语言之Python

    一、知识汇总 掌握 Python 编程语言需要具备一定的基础知识和技能,特别是对于从事自动化测试等领域的工程师。以下是掌握 Python 的一些关键方面: 基本语法: 理解 Python 的基本语法,包括变量、数据类型、运算符、条件语句、循环语句等。 数据结构: 熟悉并能够使用

    2024年01月18日
    浏览(12)
  • 开发语言漫谈-JavaScript

           JavaScript、Java名字很相近,但它们没有任何亲缘关系,是由不同公司开发的编程语言。Java由Sun公司(后被Oracle收购)开发,JavaScript最初是由Netscape公司开发的(当年浏览器的霸主)。JavaScript最初的名字是 LiveScript,Netscape将其命名为 JavaScript,无非是蹭 Java流量。当

    2024年04月16日
    浏览(13)
  • GO语言基础笔记(八):高级特性与性能优化

    GO语言基础笔记(八):高级特性与性能优化

             目录 反射(Reflection) 反射概念 反射的关键概念 反射的常见用途 代码示例 1. 检查类型和值 2. 修改变量值 3. 调用函数 4. 结构体反射 并发模式(Concurrency Patterns) 1. Worker Pool 模式 工作原理 在代码中的体现 2. Pipeline 模式 工作原理 在代码中的体现 3. Fan-in/Fan-out

    2024年02月02日
    浏览(15)
  • python高级基础

    python高级基础

    简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改 在闭包中的内部函数如果要修改外部变量就要借助 nonlocal 闭包修饰器语法 注意看加粗的两个地方是语法糖 实际原理还是用的是闭包 工厂模式 优点:创建出来的

    2024年02月12日
    浏览(7)
  • HarmonyOS应用开发者基础与高级认证题库——中级篇

    HarmonyOS应用开发者基础与高级认证题库——中级篇

    HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 今天刚换了台果子手机就收到了华子鸿蒙开发认证邀请(认证链接),粗略看了看感觉还行,遂1h22min速通基础+高级双认证。感兴趣的也可以去搞一个,胜聊于无。 只要使用端云一体化的云端资源就需要支

    2024年02月15日
    浏览(67)
  • 【Node.js从基础到高级运用】二、搭建开发环境

    【Node.js从基础到高级运用】二、搭建开发环境

    在上一篇文章中,我们介绍了Node.js的基础概念。现在,我们将进入一个更实际的阶段——搭建Node.js的开发环境。这是每个Node.js开发者旅程中的第一步。接下来,我们将详细讨论如何安装Node.js和npm,以及如何使用版本管理工具来维护不同的Node.js版本。 Node.js的安装过程相当简

    2024年03月14日
    浏览(14)
  • 建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— 网络协议 建站系列(四)— Web服务器之Apache、Nginx 建站系列(五)— 前端开发语言之HTML、CSS、JavaScript 建站系列(六)— 后端开发语言 建站系列(七)— 常用前后端框架

    2024年02月09日
    浏览(15)
  • HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

    HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

    ArkTS 是HarmonyOS(鸿蒙操作系统)原生应用开发的首选语言。它是用于构建用户界面的一种TypeScript方言,扩展了TypeScript以适应HarmonyOS生态系统的UI开发需求。ArkTS 融合了TypeScript的静态类型系统和现代UI框架的设计理念,为开发者提供了一种更安全高效的方式来编写HarmonyOS应用。

    2024年02月20日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包