# -*- coding:utf-8 -*-
"""
实际案例:
在设计某网络程序时,我们自定义了一个基于UDP的网络协议,
按照固定次序向服务器传递一系列参数:
hwDetect: "<0112>"
gxDepthBits: "<32>"
....
在程序中我们将各个参数按次序收集到列表中:
["<0112>", "<32>", "<1024*768>", ....]
最终我们要把各个参数拼接成agiel数据报进行发送.
"<0112><32><1024*768>...."
解决方案:
方法一:迭代列表,连续使用'+'操作依次拼接每一个字符串.
方法二:使用str.join()方法,耿佳快速的拼接列表中所有字符串.
"""
s1 = 'abcdefg'
s2 = '12345'
s = s1 + s2 # 调用的是str.__add__(s1, s2)重载函数生成的结果
# s1 > s2 # str.__gt__(s1, s2)
pl = ["<0112>", "<32>", "<1024>"]
s = ''
for p in pl:
s += p # 存在重复地创建字符串临时对象,释放临时结果的循环过程,浪费资源
print s
# <0112>
# <0112><32>
# <0112><32><1024>
print ';'.join(['abc', '123', 'xyz'])
print ''.join(['abc', '123', 'xyz']) # join方法不存在临时资源浪费的情况
# abc;123;xyz
# abc123xyz
l = ['abc', 123, 45, 'xyz']
print ''.join([str(x) for x in l]) # 当字符串很长时,也会对资源产生很大的开销
# 使用生成器表达式:类似于列表解析,只不过换成圆括号 (str(x) for x in l)
# 它是一个生成器对象<generator object <genexpr> at 0x7fa0d95d9b40>
print ''.join(str(x) for x in l)
4-4将多个小字符串频拼接成一个字符串
最新推荐文章于 2024-02-27 11:55:33 发布
本文介绍了一种在网络程序设计中对于基于UDP协议的自定义数据包参数拼接的方法。通过对参数列表使用不同的字符串拼接技术,如迭代列表使用'+'操作符与使用str.join()方法,来提高数据包构建效率并减少资源消耗。
4335

被折叠的 条评论
为什么被折叠?



