阅读 9328

Python代码的实用技巧专栏

MedusaSorcerer的博客


专栏目录

专栏详情

将 Dict 类型的字符转换为 Dict 对象

import ast
dict_obj = ast.literal_eval("{'key': 'value'}")

import json
json.loads("{'key': 'value'}")
复制代码

将 Unicode 码转为 String 类型

unicode = u"unicode"
string = unicode.encode("unicode-escape").decode("string_excape")
复制代码

将 String 类型转为 Unicode 码

string = "string"
unicode = string.decode("unicode-escape")
复制代码

将 JSON 数据格式化输出

import json
json_code = {"key": "value"}
json.dumps(json_code, sort_keys=True, indent=4, separtors=(",", ":"))
复制代码

删除 String 中所有的空字符

old_string = "a b c d e f"
new_string = "".join(old_string.split())
复制代码

获取某变量值对应的变量名的变量值

a = "b"
b = '这个是b的变量值'
eval(a)  
# 输出结果: "this is b"
# 该函数把字符串当作代码执行, 所以在项目中极为不安全, 不建议使用
复制代码

对 String 类型的数据格式化

# Python2
"{boy_name} 还是很喜欢 {girl_name}".format(boy_name="Medusa", girl_name="medusa")
"{0} 还是很喜欢 {1}".format("Medusa", "medusa")

# Python3
boy_name = "Medusa"
girl_name = "medusa"
f"{boy_name} 还是很喜欢 {girl_name}"
复制代码

输出可视化日志信息,包含自定义输出格式

# 默认配置输出格式
from logger import logger
logging.debug("debug")  # 最详细的日志信息,调试模式
logging.info("info")  # 仅次于debug的日志信息,记录代码节点信息
logging.warning("warning")  # 告警日志信息,在遇到一些事件告警时触发,如硬盘空间不足
logging.error("error")  # 记录异常日志,说明某些功能无法正常运行
logging.critical("crirical")  # 严重错误,说明服务器不会正常运行

# 使用自定义格式配置
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
logging.debug("debug")  # 最详细的日志信息,调试模式
logging.info("info")  # 仅次于debug的日志信息,记录代码节点信息
logging.warning("warning")  # 告警日志信息,在遇到一些事件告警时触发,如硬盘空间不足
logging.error("error")  # 记录异常日志,说明某些功能无法正常运行
logging.critical("crirical")  # 严重错误,说明服务器不会正常运行
复制代码

输出Python原始异常错误,并写进日志文件log.log

import traceback
try:
    '需要异常捕获的代码'
except Exception:
    traceback.print_exc(file=open("log.log", "a"))
复制代码

偏函数的定义和使用

import functools

def func(a, b):
    """ 计算传递的 a 和 b 的乘积 """
    print(a * b)
    
# 当函数传递参数对象的某个固定位置需要一个固定值的时候,可以使用偏函数的方式

# 生成一个偏函数对象,并传递第一个参数为100
new_func = functools.partial(func, 100)

# 调度偏函数对象并查看结果,此时传递的参数仅需要传递第二个参数值即可
new_func(2)  # 输出: 200
new_func(3)  # 输出: 300
new_func(4)  # 输出: 400
复制代码

匿名函数的定义和使用

# 定义一个匿名函数计算传递参数的平方值
func = lambda x: x * x

# 使用 map() 函数进行调用,查看结果
map(func, [1, 2, 3, 4, 5, 6, 7, 8, 9])  # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81]
复制代码

对List类型数据进行数值排序

a = [5, 2, 1, 12]
a.sorted(reverse=True)  # 生成一个排序后的新列表
a.sort(reverse=True)  # 将原列表排序
复制代码

查询本地文件的相关时间信息

import os
os.path.getatime("file_path")  # 指定文件路径的文件 访问时间
os.path.getctime("file_path")  # 指定文件路径的文件 创建时间
os.path.getmtime("file_path")  # 指定文件路径的文件 修改时间
复制代码

Python的数据类型

类型关键字举个栗子枚举说明
str"string"-字符串类型
int1, 2, 3-整数类型
float1.2, 0.2-小数类型
boolTrue, FalseTrue, False布尔类型
complex(1+0j), (2+0j)-复数类型
list[1, 2, 3]-列表类型
set{1, 2, 3}-集合类型
dict{"key": "value"}-字典类型
tuple(1, 2, 3)-元组类型
NoneNoneNone空对象