[Python基础学习]-3.2-|高阶技巧|-ing

内容主要参照b站《 黑马程序员python教程,8天python从入门到精通,学python看这套就够了》,链接: https://www.bilibili.com/video/BV1qW4y1a7fU?p=1&vd_source=b0665a83555604d15c1cecb7c0cfebfa
部分内容资料来自互联网,后续博客会不断完善知识点

高阶技巧


闭包


全局变量有被修改的风险

定义:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数成为闭包

"""

演示python的闭包特性

"""

# 简单闭包

defouter(logo):

# 这里面在开始时候输入了,因此内部的logo被定义了

definner(msg):

print(f"{logo}{msg}{logo}")

# 返回的是函数

returninner

# 利用fn1来 接受函数

# 因为返回的是inner函数

fn1=outer("程序员")

# 将fn1对应的inner(已赋值来处理)

fn1("hi")

# 重新修改其中的参数必须再次调用

fn2=outer("大王集团")

fn2("say-hello")

nonlocal使用

defouter2(num1):

definner2(num2):

# 分清num1位置不同对于函数内和函数外变量是不同的

# nonlocal声明的变量不是局部变量, 也不是全局变量, 而是外部嵌套函数内的变量。

# 用在两个函数之间的

nonlocalnum1

num1+=num2

print(num1)

returninner2

fn22=outer2(10)

fn22(10)

fn22(200)

fn22(1000)

202201220
进程已结束,退出代码0

总结

装饰器

装饰器其实也是一种闭包,其功能实不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能

改变函数内调用的函数

下面是底层原理的演示

语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换,可以提高开发编码的效率。

@outer的用法就是很想装饰器,在不动原有代码的基础上增加新的功能

本质上还是增加了新功能

设计模式


编程中除了面向对象外,还有很多其他的套路,比如单例和工厂

单例模式

在一个单独文件中单独定义其中的单例对象

工厂模式

将对象放到大的对象中, 然后在其中具体来设置

多线程与并行处理概念


线程是归属与进程的,一个进程可以开启多个线程,执行不同的工作,是进程的 实际工作最小单元(进行实际的工作者)

操作系统中可以运行多个进程,即多任务运行

一个进程内可以运行多个线程,即多线程运行

进程、线程

进程之间是内存隔离的

并行执行

线程其实也可以并行执行

比如一个py程序,其实可以做到
一个线程在输出:你好
一个线程在输出:hello

多线程编程

import threading

threading.Thread(sing)

# 通过设置来多线程启动

sing_thread.start()

dance_thread.start()

元组的输入过程中要带入( , )
# 即使是空的也要带

网络编程


服务端开发

进程之间想要进行网络通信需要socket
它是 数据的搬运工

socket服务端编程

主要步骤:

  1. 创建socket对象

  1. 绑定socket_server到指定IP和地址

  1. 服务端开始监听端口

  1. 接受客户端连接,获得连接对象

注意:accept接受的是一个 二元元组
  1. 客户端连接后,通过recv方法,接受客户端发送的消息

  1. 通过conn(客户端当次连接对象),调用send方法可以回复消息

  1. conn(客户端当次连接对象)和socket_server对象调用close方法,关闭连接

借助网络服务助手来进行网络调试

客户端开发

利用socket_client.connect对象来连接

正则表达式


基础匹配

正则表达式定义:检索、替换哪些符合某个模式(规则)的文本

if,else 用来判断格式太困难了

python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配

  • match

  • search

  • findall

match
match:是从开头进行匹配

search
搜索整个字符串,找出匹配的,从前往后,找到第一个后, 就停止,不会继续向后

findall
找到全部的,不管开头的限制

总结

元字符匹配

正则最强大就在于元字符匹配规则

通配符是 文本值中代替未知字符的特殊字符,可方便使用类似但不相同的数据查找多个项目。
主要有星号(*)和问号(?)
用来模糊搜索文件
r 使得语言成为普通字符

importre

s="asfhasjfas ## @@ python !! 6666 itccast3"

# 下面的部分不能增加空格,否则会多搜索内容

result=re.findall(r'[a-zA-Z0-5]',s)

print(result)

r='^[0-9a-zA-Z]{6,10}$'

^表示匹配字符串开头
$表示匹配字符串结尾

不要带上空格

+表示匹配前一个规则的字符出现1至无数次
\w-表示匹配单词字符及-

r='^[\w-]+(\.[\w-]+)*@(qq|163|gmail)([\.w-]+)+$'

1.字符串的r标记表示,字符串内转移字符无效,作为普通字符使用

递归


递归在编程中很重要

递归:即方法(函数)自己调用自己的一种特殊编程写法

deffuc():

if...:

func()

return...

pass

pass语句。它被用作 尚未实现的(但将来想实现)函数、循环等的 占位符不执行任何操作

利用调试来研究递归思想
端点的设置很关键

递归的关键,进入的函数来记录相关的内容, 不相关的设置条件来退出

递归一定要设置好退出条件

总结

未来学习路线


依据视频中基础涵盖的知识来对内容进行对应学习,织网一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值