Python开发简洁小技巧
同时遍历两个列表
同时遍历两个列表,比如as = ["张三", "李四", "王五"],bs = ["zhangsan", "lisi", "wangwu"],往往对应列表顺序元素有对应关系,使用zip:
for a, b in zip(as, bs):
print(a, b) # 张三 zhangsan ...
笛卡尔积遍历
同时遍历列表构造全部组合,比如as = ["a", "b"],bs = ["1", "2"],我们希望得到的结果是a,1和a,2和b,1和b,2(笛卡尔积),使用product(引入itertools这个SDK):
from itertools import product
for a, b in product(as, bs):
print(a, b) # a 1 ...
字节型变字符串
有些缓存管道或消息队列存入数据会传入传出字节的形式,但后续往往都会用字符串的形式,就需要字节型无损失地变为字符串,decode可以解决这个问题。
bytes = b'012345'
str = bytes.decode('UTF-8') # byte不能直接转str,可以转int再转str,那么会导致前面的0无了
Django直接使用SQL操作
其实就是原生python用pymysql(python3版本,也兼容python2,也就是python2中的mysql-python)操作mysql,不想用ORM操作queryset或涉及复杂的SQL操作,就可以用。(不过要避免SQL注入问题)
from django.db import connection # 使用事务的话导入 transaction
cursor = connection.cursor() # 连接
# cursor.execute(SQL语句),类似↓,不过要避免SQL注入问题,可以把int转string再转int这种
cursor.execute("SELECT name from USER where id like '%s'" % id)
# fetchone() 获取一条记录
# fetchall() 获取全部记录
result = cursor.fetchone()
列表初始化用0占位
有时python中是需要预先占位,来进行更新操作的,而Python中又没有数组这种明确的数据类型,一般用list代替
# 定义一个预长度10,占位为0的列表
list1 = [0 for i in range(10)]
# 还有运行更快且更简洁的方法 ↓
list2 = [0] * 10
针对post请求带参数--data-urlencode的情况处理
curl --request POST 'http://xxx' --data-urlencode 'data={"xxx1":xxx2}'文章来源:https://www.toymoban.com/news/detail-409292.html
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
body = {"xxx1":xxx2}
try:
ret = requests.post(url, data=body, headers=headers)
if ret.status_code == 200:
data = json.loads(ret.text)
else:
logger.error(ret.text) # 将错误内容信息一次带出
raise Exception
return data
except Exception as err:
logger.error("error:{}".format(err))
但往往我们更多使用的是JSON格式的传输,类似于↓:文章来源地址https://www.toymoban.com/news/detail-409292.html
params = {"xxx1":xxx2}
headers = {'content-type': 'application/json'}
response = requests.post(url, json=params, headers=headers)
到了这里,关于Python开发小技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!