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

网站开发成本核算门户网站模板源码下载

网站开发成本核算,门户网站模板源码下载,秀山网站建设端午节手抄报获奖,单页网站 开元版本说明 当前版本号[20231018]。 版本修改说明20231018初版 目录 文章目录 版本说明目录Python高阶技巧闭包简单闭包修改外部函数变量的值实现以下atm取钱的闭包实现了闭包注意事项 装饰器装饰器的一般写法#xff08;闭包写法#xff09;装饰器的语法糖写法 设计模式单例…版本说明 当前版本号[20231018]。 版本修改说明20231018初版 目录 文章目录 版本说明目录Python高阶技巧闭包简单闭包修改外部函数变量的值实现以下atm取钱的闭包实现了闭包注意事项 装饰器装饰器的一般写法闭包写法装饰器的语法糖写法 设计模式单例模式单例的实现模式 工厂模式 多线程进程、线程和并行执行进程、线程并行执行 多线程编程threading模块 多线程练习案例 网络编程服务端开发Socket客户端和服务端Socket服务端编程实现服务端并结合客户端进行测试 客户端开发Socket客户端编程服务端客户端相互通讯 正则表达式基础匹配正则的三个基础方法 元字符匹配单字符匹配数量匹配边界匹配分组匹配 递归递归找文件 Python高阶技巧 闭包 通过全局变量account_amount来记录余额 尽管功能实现是ok的但是仍有问题 代码在命名空间上变量定义不够干净、整洁全局变量有被修改的风险 如何解决 将变量定义在函数内部是行不通的我们需要使用闭包 在函数嵌套的前提下内部函数使用了外部函数的变量并且外部函数返回了内部函数我们把这个使用外部函数变量的内部函数称为闭包。 简单闭包 修改外部函数变量的值 实现以下atm取钱的闭包实现了 闭包注意事项 优点使用闭包可以让我们得到 •无需定义全局变量即可实现通过函数持续的访问、修改某个值 •闭包使用的变量的所用于在函数内难以被错误的调用修改 缺点 •由于内部函数持续引用外部函数的值所以会导致这一部分内存空间不被释放一直占用内存 示例代码 def account_create(initial_amount0):def atm(num, depositTrue):nonlocal initial_amountif deposit:initial_amount numprint(f存款{num}, 账户余额{initial_amount})else:initial_amount - numprint(f存款-{num}, 账户余额{initial_amount})return atmatm account_create() atm(300) atm(200) atm(100, False)装饰器 装饰器其实也是一种闭包 其功能就是在不破坏目标函数原有的代码和功能的前提下为目标函数增加新功能。 希望给sleep函数增加一个功能 •在调用sleep前输出我要睡觉了 •在调用sleep后输出我起床了 装饰器的一般写法闭包写法 装饰器的语法糖写法 示例代码 def outer(func):def inner():print(我要睡觉了)func()print(我起床了)return innerouter def sleep():import randomimport timeprint(睡眠中……)time.sleep(random.randint(1, 5))sleep()设计模式 设计模式是一种编程套路可以极大的方便程序的开发。 最常见、最经典的设计模式就是我们所学习的面向对象了。 除了面向对象外在编程中也有很多既定的套路可以方便开发我们称之为设计模式 单例、工厂模式建造者、责任链、状态、备忘录、解释器、访问者、观察者、中介、模板、代理模式等等模式 单例模式 创建类的实例后就可以得到一个完整的、独立的类对象。 通过print语句可以看出它们的内存地址是不相同的即t1和t2是完全独立的两个对象。 某些场景下 我们需要一个类无论获取多少次类对象都仅仅提供一个具体的实例 用以节省创建类对象的开销和内存开销比如某些工具类仅需要1个实例即可在各处使用 这就是单例模式所要实现的效果。 单例模式Singleton Pattern是一种常用的软件设计模式该模式的主要目的是确保某一个类只有一个实例存在。 在整个系统中某个类只能出现一个实例时单例对象就能派上用场。 定义: 保证一个类只有一个实例,并提供一个访问它的全局访问点适用场景:当一个类只能有一个实例而客户可以从一个众所周知的访问点访问它时。 单例的实现模式 工厂模式 当需要大量创建一个类的实例的时候 可以使用工厂模式。 即从原生的使用类的构造去创建对象的形式迁移到基于工厂提供的方法去创建对象的形式。 使用工厂类的get_person()方法去创建具体的类对象 优点 大批量创建对象的时候有统一的入口易于代码维护当发生修改仅修改工厂类的创建方法即可符合现实世界的模式即由工厂来制作产品对象 示例代码 class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass 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) stu pf.get_person(s) teacher pf.get_person(t)多线程 进程、线程和并行执行 进程、线程 现代操作系统比如Mac OS XUNIXLinuxWindows等都是支持“多任务”的操作系统。 进程 就是一个程序运行在系统之上那么便称之这个程序为一个运行进程并分配进程ID方便系统管理。 线程线程是归属于进程的一个进程可以开启多个线程执行不同的工作是进程的实际工作最小单位。 进程就好比一家公司是操作系统对程序进行运行管理的单位 线程就好比公司的员工进程可以有多个线程员工是进程实际的工作者 操作系统中可以运行多个进程即多任务运行 一个进程内可以运行多个线程即多线程运行 注意点 进程之间是内存隔离的 即不同的进程拥有各自的内存空间。 这就类似于不同的公司拥有不同的办公场所。 线程之间是内存共享的线程是属于进程的一个进程内的多个线程之间是共享这个进程所拥有的内存空间的。 这就好比公司员工之间是共享公司的办公场所。 并行执行 并行执行的意思指的是同一时间做不同的工作。 进程之间就是并行执行的操作系统可以同时运行好多程序这些程序都是在并行执行。 除了进程外线程其实也是可以并行执行的。 也就是比如一个Python程序其实是完全可以做到 一个线程在输出你好一个线程在输出Hello 像这样一个程序在同一时间做两件乃至多件不同的事情 我们就称之为多线程并行执行 多线程编程 threading模块 绝大多数编程语言都允许多线程编程Pyhton也不例外。 Python的多线程可以通过threading模块来实现。 多线程练习案例 import time import threadingdef 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(targetsing, args(我要唱歌,))#创建一个跳舞的线程dance_thread threading.Thread(targetdance, kwargs{msg: 我在跳舞})#使线程开始工作 sing_thread.start() dance_thread.start()网络编程 服务端开发 Socket socket (简称 套接字) 是进程之间通信一个工具好比现实生活中的插座所有的家用电器要想工作都是基于插座进行进程之间想要进行网络通信需要socket。 Socket负责进程之间的网络数据传输好比数据的搬运工。 客户端和服务端 2个进程之间通过Socket进行相互通讯就必须有服务端和客户端 Socket服务端等待其它进程的连接、可接受发来的消息、可以回复消息 Socket客户端主动连接服务端、可以发送消息、可以接收回复 Socket服务端编程 主要分为如下几个步骤 创建socket对象 绑定socket_server到指定IP和地址 服务端开始监听端口 接收客户端连接获得连接对象 客户端连接后通过recv方法接收客户端发送的消息 通过conn客户端当次连接对象调用send方法可以回复消息 conn客户端当次连接对象和socket_server对象调用close方法关闭连接 实现服务端并结合客户端进行测试 下载网络调试助手作为客户端 https://github.com/nicedayzhu/netAssist/releases 示例代码 #演示Socket服务端开发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方法返回的是二元元组链接对象客户端地址信息 #可以通过 变量1 变量2 socket_server.accept()的形式直接接受二元元组内的两个元素 #accept()方法是阻塞的方法等待客户端的链接如果没有链接就卡在这一行不再向下执行print(f我接收到了客户端的链接客户端的信息是{address})while True:#接受客户端的信息要使用客户端和服务端的本次链接对象而非socket_server对象data: str conn.recv(1024).decode(UTF-8)#recv接受的参数是缓冲区大小一般1024即可#recv方法的返回值是一个字节数组也就是bytes对象不是字符串可通过decade方法通过UTF-8编码将字节数组转换为字符串对象print(f客户端发来的信息是{data})#发送回复消息msg input(请输入你要和客户端回复的消息)if msg exit:breakconn.send(msg.encode(UTF-8))#关闭链接 conn.close() socket_server.close()客户端开发 Socket客户端编程 主要分为如下几个步骤 创建socket对象 连接到服务端 发送消息 接收返回消息 关闭链接 服务端客户端相互通讯 结合上一节学习的服务端代码以及当前学习的客户端代码。 两者均运行起来进行相互通讯。 正则表达式 基础匹配 正则表达式又称规则表达式Regular Expression是使用单个字符串来描述、匹配某个句法规则的字符串常被用来检索、替换那些符合某个模式规则的文本。 简单来说正则表达式就是使用字符串定义规则并通过规则去验证字符串是否匹配。 比如验证一个字符串是否是符合条件的电子邮箱地址只需要配置好正则规则即可匹配任意邮箱。 比如通过正则规则 (1(.[\w-])*[\w-](.[\w-])$) 即可匹配一个字符串是否是标准邮箱格式 但如果不使用正则使用if else来对字符串做判断就非常困难了。 正则的三个基础方法 Python正则表达式使用re模块并基于re模块中三个基础方法来做正则匹配。 分别是match、search、findall 三个基础方法 re.match(匹配规则 被匹配字符串) 从被匹配字符串开头进行匹配 匹配成功返回匹配对象包含匹配的信息匹配不成功返回空。 search(匹配规则 被匹配字符串) 搜索整个字符串找出匹配的。从前向后找到第一个后就停止不会继续向后 整个字符串都找不到返回None findall(匹配规则 被匹配字符串) 匹配整个字符串找出全部匹配项 找不到返回空list: [] re模块的三个主要方法 re.match从头开始匹配匹配第一个命中项re.search全局匹配匹配第一个命中项re.findall全局匹配匹配全部命中项 元字符匹配 在刚刚我们只是进行了基础的字符串匹配正则最强大的功能在于元字符匹配规则。 单字符匹配 示例 字符串 s “itheima1 python2 !!666 ##itcast3” 找出全部数字 re.findall(r‘\d’, s)字符串的r标记表示当前字符串是原始字符串即内部的转义字符无效而是普通字符 找出特殊字符 re.findall(r‘\W’, s)找出全部英文字母 re.findall(r’[a-zA-Z]’, s)[]内可以写[a-zA-Z0-9] 这三种范围组合或指定单个字符如[aceDFG135] 数量匹配 边界匹配 分组匹配 递归 递归在编程中是一种非常重要的算法 递归 即方法函数自己调用自己的一种特殊编程写法 如 函数调用自己即称之为递归调用。 递归找文件 最典型的递归场景为找出一个文件夹中全部的文件。 如图在D:/test 文件夹内有如下嵌套结构和所属的文件 可以通过递归编程的形式完成 3. os模块的3个方法 os.listdir列出指定目录下的内容os.path.isdir判断给定路径是否是文件夹是返回True否返回False \w- ↩︎
http://www.huolong8.cn/news/220519/

相关文章:

  • 长沙的在线商城网站建设微小店网站建设口碑好
  • 网站模块设计软件wordpress 换空间 目录 西部数码
  • 网站psd模板服务商标是什么意思
  • 一元购网站建设网站开发建设用的软件
  • 淘客做网站有必要吗中国万网域名注册价格
  • 中山网站建设服务模仿图库网站开发
  • 做网站需要学习哪些网站备案密码格式
  • 深圳极速网站建设推荐wordpress如何改默认后台地址
  • 做企业网站需要人维护么服务器做jsp网站教程
  • 企业网站实名认证时间网站建设越来越便宜
  • 网站开发费用会计分录wordpress卡密系统源码主题
  • 高唐网站建设公司国家建设部官方网站赵宏彦
  • 菏泽手机网站建设wordpress前台显示异常后台进不去
  • 新建的网站多长时间在百度搜到网络营销推广形式
  • 好的网站首页的特点coding wordpress博客
  • 做视频网站都需要什么软件下载网络营销推广的策略
  • 希腊网站后缀wordpress全站网易云音乐播放
  • 珠海网站建设 amp 超凡科技wordpress 加入字体库
  • 查询网站收录情况的方法asp网站制作成品作业
  • 大连手机自适应网站建设价格服装商店的网站建设要求
  • 网站打开很慢怎么做优化kencms内容管理系统
  • 珠海哪个公司建设网站好职业技能培训机构
  • 门户网站建设流程wordpress 如何做门户
  • 有名的网站制作公司安卓手机怎么制作网站
  • 特产网站设计网站突然不收录2017
  • 微信小程序里的网站怎么做德阳企业品牌网站建设
  • 做商贸生意的人都去什么网站网站建设与管理 教学设计
  • 帝国系统做企业网站做网站郑州汉狮
  • 内衣网站建立镇江网站制作哪家公司比较好
  • 李宁网站建设计划书工程项目全过程管理流程