需要使用nonlocal关键字修饰外部函数的变量才可在内部函数中修改它
装饰器其实也是一种闭包,其功能就是在不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能。
import threading
thread_obj = threading.Thread([group,target [,name [,args [, kwargs]]]]])
-group:暂时无用,未来功能的预留参数
-target:执行的目标任务名
-args:以元组的方式给执行任务传参
-kwarqs:以字典方式给执行任务传参
-name:线程名,一般不用设置
#启动线程,让线程开始工作
thread_obj.start()
1.创建socket对象
import socket
socket_server = socket.socket() //未确定是服务端还是客户端
2.绑定socket_server到指定IP和地址
socket_server.bind(host,port) //绑定bind确定是服务端
3.服务端开始监听端口
socket_server.listen(backlog)
# backlog为int整数,表示允许的连接数量,超出的会等待,可以不填,不填会自动设置一个合理值
4.接收客户端连接,获得连接对象
conn,address=socket_server.accept()
print(f"接收到客户端连接,连接来自:{address}")
#accept方法是阻塞方法,如果没有连接,会卡再当前这一行不向下执行代码
#accept返回的是一个二元元组,可以使用上述形式,用两个变量接收二元元组的2个元素
5.客户端连接后,通过recv方法,接收客户端发送的消息
while True:
data = conn.recv(1024).decode("UTF-8")
#recv方法的返回值是字节数组(Bytes),可以通过decode使用UTF-8解码为字符串
#recv方法的传参是buffsize,缓冲区大小,一般设置为1024即可
if data == 'exit':
break
print("接收到发送来的数据:",data)
#可以通过while True无限循环来持续和客户端进行数据交互
#可以通过判定客户端发来的特殊标记,如exit,来退出无限循环
6.通过conn(客户端当次连接对象)调用send方法可以回复消息
while True:
data = conn.recv(1024).decode("uTF-8")
if data == 'exit':
break
print("接收到发送来的数据:",data)
conn.send("你好".encode("UTF-8"))
7.conn(客户端当次连接对象)和socket server对象调用close方法,关闭连接
conn.close()
socket_server.close()
1.创建socket对象
import socket
socket_client = socket.socket()
2.连接到服务端
socket_server.connnect(host,port) //绑定connect确定是服务端
3.发送/接收消息
while True:
send_msg = input()
if data == 'exit':
break
socket_client.send(send_msg.encode("utf-8"))
recv = socket_client.recv(1024)
#recv是阻塞式的,即不接收就返回,卡在这里等待
4.关闭链接
socket_client.close()
s ='python itheima python itheima python itheima'
result =re.match('python',s)
print(result) #
print(result.span()) #(0,6)
print(result.group()) #python
s ='1python itheima python itheima python itheima'
result = re.match('python',s)
print(result) #None
s ='1python666itheima666python666'
result = re.search('python',s)
print(result) #
print(result.span()) #(1,7)
print(result.group()) #python
s ='itheima666'
result =re.search('python',s)
print(result)# None
s =1python666itheima666python666'
result = re.findall('python',s)
print(result) #['python','python']
s=1python666itheima666python666'
result =re.findall('itcast's)
print(result) #[ ]
单字符匹配
数量匹配
{}
里面一定不能有空格
边界匹配
分组匹配
1.安装
pip install Pyspark
# 导包
from pyspark import Sparkconf, sparkcontext
# 创建sparkconf类对象
conf = Sparkconf().setMaster("local[*]").setAppName("test_spark_app")
# 基于Sparkconf类对象创建Sparkcontext类对象
sc =Sparkcontext(conf=conf)
#打印PySpark的运行版本
print(sc.version)
# 停止sparkcontext对象的运行(停止PySpark程序)
sc.stop()
编程模型