网站域名如何续费,5款免费的网站管理系统,网站建设公司新闻,腾讯广告推广怎么做python知识点总结九 1、TCP中socket的实现代码实现TCP协议a、服务端b、客户端#xff1a; 2、写装饰器#xff0c;限制函数被执行的频率#xff0c;如10秒一次3、请实现一个装饰器#xff0c;通过一次调用函数重复执行5次4、写一个登录装饰器对一下函数进行装饰#xff0c… python知识点总结九 1、TCP中socket的实现代码实现TCP协议a、服务端b、客户端 2、写装饰器限制函数被执行的频率如10秒一次3、请实现一个装饰器通过一次调用函数重复执行5次4、写一个登录装饰器对一下函数进行装饰要求输入账号和密码才能运行该函数5、字典的fromkeys6、字典推导式7、字典 setdefault() 方法8、len(dict)9、将python is shell 转为 “nohtyp si llehs” 1、TCP中socket的实现 listen()监听客户端的连接客户端有链接listen马上就有返回。 accept()连接之后会返回客户端的信息ip地址、端口号如果没有连接则一直堵塞。连接成功后服务器就可以发数据同时会创建一个新的socket recvfrom接收客户端的数据如果服务端没有收到客户端发来的数据会滞留下面的代码不会执行。 read()读取客户端发过来的数据 write()将数据返回给客户端 由new_socket来完成与客户端数据的传输 如果new_socket关闭则说明当前的这个客户端请求结束服务端服务完毕如果有新的请求来了服务器会创建新的new_socket与它通讯。 如果关掉第一个socket则说明整个服务端程序关闭了 代码实现TCP协议
a、服务端
from socket import *# todo 1、创建server-socket TCP协议
server_socket socket(AF_INET, SOCK_STREAM)# todo 2、创建目标服务器绑定一个IP和端口 服务器里面空的字符串代表server_socket绑定这台机器下的任何ip地址
host_port (, 8088)
server_socket.bind(host_port)# todo 3、监听服务器的socket,listen让socket处于被动。这时就可以接收客户端的连接请求了
server_socket.listen(5) # 一般为5表示客户端线程挂起的个数# todo 4、等待客户端的连接请求,当前函数是线程阻塞的函数accept返回2个值第一个新的socket第二个客户端地址
new_socket, client_addr server_socket.accept() # todo 新创建的socket是server_socket中的子socket只是和当前的客户端一个客户端收发数据# todo 5、服务器接收客户端发送过来的数据,recv一般用于TCP协议的接收数据recvfrom用于UDP
data new_socket.recv(1024) # data是字节数据print(服务器接收的数据是, data.decode(utf-8))# todo 6、服务器端发送数据给客户端在TCP中发送数据用sendUDP用sendto
new_socket.send(THANK you.encode(utf-8))# 关闭套接字
new_socket.close() # todo new_socket关闭意味着当前客户端的服务已经完成
server_socket.close() # todo server_socket关闭意味着整个服务器全部关闭代码注释 1、host_port (‘’, 8088) server_socket.bind(host_port) 创建目标服务器绑定一个IP和端口 服务器里面空的字符串代表server_socket绑定这台机器下的任何ip地址 2、new_socket, client_addr server_socket.accept() 等待客户端的连接请求,当前函数是线程阻塞的函数accept返回2个值第一个新的socket第二个客户端地址 新创建的socket是server_socket中的子socket只是和当前的客户端一个客户端收发数据 3、data new_socket.recv(1024) # data是字节数据 服务器接收客户端发送过来的数据,recv一般用于TCP协议的接收数据recvfrom用于UDP 4、new_socket.send(‘THANK you’.encode(‘utf-8’)) 服务器端发送数据给客户端在TCP中发送数据用sendUDP用sendto b、客户端
from socket import *# todo 1、客户端、创建client-socket TCP协议
client_socket socket(AF_INET, SOCK_STREAM)# todo 2、客户端发送连接的请求不是传输数据的请求是创建连接的请求# todo 目标服务器的ip和端口号
server_ip_port (192.168.1.112, 8088)# todo 发送连接请求此时服务端产生了新的new_socket
client_socket.connect(server_ip_port)#client_socket.close()# todo 客户端发送请求,用send不用sendto客户端知道服务器的ip和端口服务器也知道客户端的端口和ip因为是面向连接的
send_data input(请输入)
client_socket.send(send_data.encode(utf-8))# todo 接收服务器返回的数据
recv_data client_socket.recv(1024)print(客户端接收到的服务器的数据为, recv_data.decode(encodingutf-8))# todo 关闭socket
client_socket.close()
代码注释 send_data input(‘请输入’) client_socket.send(send_data.encode(‘utf-8’)) 客户端发送请求,用send不用sendto客户端知道服务器的ip和端口服务器也知道客户端的端口和ip因为是面向连接的
2、写装饰器限制函数被执行的频率如10秒一次
def A(func):start 0def inner(*args, **kwargs):nonlocal startnow time.time()if now - start 10:res func(*args, **kwargs)start nowreturn reselse:return (访问过于频繁)return innerA
def func(a, b):return a bprint(func(2, 3))
# time.sleep(11)
print(func(2, 3))3、请实现一个装饰器通过一次调用函数重复执行5次 def outer(func):i 0def inner(*args, **kwargs):nonlocal iwhile i 5:res func(*args, **kwargs)print(f执行第{i}次结果为{res})i 1return innerouter
def func(a, b):return a bfunc(5, 5)4、写一个登录装饰器对一下函数进行装饰要求输入账号和密码才能运行该函数
def outer(func):def inner(*args, **kwargs):user kwargs.get(user)pwd kwargs.get(pwd)if user and pwd:res func(*args, **kwargs)return reselse:return 函数不执行return innerouter
def func6(userNone, pwdNone):return 函数开始执行print(func6(pwd123, userwer))5、字典的fromkeys
Python 字典 fromkeys() 函数用于创建一个新字典以序列 seq 中元素做字典的键value 为字典所有键对应的初始值。
fromkeys() 方法语法
dict.fromkeys(seq[, value])seq – 字典键值列表。 value – 可选参数, 设置键序列seq对应的值默认为 None。 该方法返回一个新字典。
seq (name, age, sex)tinydict dict.fromkeys(seq)
print (新的字典为 : %s % str(tinydict))tinydict dict.fromkeys(seq, 10)
print (新的字典为 : %s % str(tinydict))输出结果为 新的字典为 : {‘age’: None, ‘name’: None, ‘sex’: None} 新的字典为 : {‘age’: 10, ‘name’: 10, ‘sex’: 10}
6、字典推导式
{键表达式:值表达式 for k , v in dict.items() if 表达式} d {“a”: 1, “b”: 2}变为{“A”:1,“B”:2}
{k.upper:v for k,v in d.items()}将键值互换
print({v: k for k, v in d.items()})统计字符串中各个字符出现的次数
s1 afsddasdas
print({item:s1.count(item) for item in s1})7、字典 setdefault() 方法
Python 字典 setdefault() 方法和 get()方法 类似, 如果键不存在于字典中将会添加键并将值设为默认值。
setdefault()方法语法
dict.setdefault(key, defaultNone)key – 查找的键值。 default – 键不存在时设置的默认键值。
如果 key 在 字典中返回对应的值。如果不在字典中则插入 key 及设置的默认值 default并返回 default default 默认值为 None。
tinydict {Name: Runoob, Age: 7}print (Age 键的值为 : %s % tinydict.setdefault(Age, None))
print (Sex 键的值为 : %s % tinydict.setdefault(Sex, None))
print (新字典为, tinydict)以上实例输出结果为
Age 键的值为 : 7 Sex 键的值为 : None 新字典为 {‘Age’: 7, ‘Name’: ‘Runoob’, ‘Sex’: None}
关于字典中 get() 和 setdefault() 的区别 主要在于当查找的键值 key 不存在的时候setdefault()函数会返回默认值并更新字典添加键值而 get() 函数只返回默认值并不改变原字典。
tinydict {Name: Runoob, Age: 7}print(Age 键的值为 : %s % tinydict.get(Age, None))
print(Sex 键的值为 : %s % tinydict.get(Sex, 女))
print(新字典为, tinydict)执行结果 Age 键的值为 : 7 Sex 键的值为 : 女 新字典为 {‘Name’: ‘Runoob’, ‘Age’: 7}
8、len(dict)
计算字典元素个数即键的总数。 tinydict {Name: Runoob, Age: 7, Class: First}len(tinydict)
39、将python is shell 转为 “nohtyp si llehs”
apython is shell
aalist(map(lambda x:x[::-1],a.split( )))
aaa .join(aa)
print(aaa)
range