位运算:
# 1. 先拿到补码(Python int 无限位宽,负数以“-”号体现,内部补码存储)
a = 56 # 0b 0011 1000
b = -18 # 原码 1001 0010 → 反码 1110 1101 → 补码 1110 1110
print('56 =', bin(a))
print('-18 =', bin(b)) # Python 输出负数为 -0b10010,下面手动补码演示
# --- 计算 ---
print('~56 =', ~a, bin(~a)) # 按位取反 -57
print('~-18 =', ~b, bin(~b)) # 按位取反 17
print('56 & -18 =', a & b, bin(a & b)) # 0011 1000 & 1110 1110 = 0010 1000 -> 40
print('56 | -18 =', a | b, bin(a | b)) # 0011 1000 | 1110 1110 = 1111 1110 -> -2
print('56 ^ -18 =', a ^ b, bin(a ^ b)) # 0011 1000 ^ 1110 1110 = 1101 0110 -> -42
# 左移右移
print('56 << 2 =', a << 2, bin(a << 2)) # 0011 1000 << 2 = 1110 0000 -> 224
print('56 >> 2 =', a >> 2, bin(a >> 2)) # 0011 1000 >> 2 = 0000 1110 -> 14
print('-18 << 2 =', b << 2, bin(b << 2)) # -18 << 2 = -72
print('-18 >> 2 =', b >> 2, bin(b >> 2)) # -18 >> 2 = -5 (算术右移补符号位)
运行图

装饰器
import functools
import datetime
import os
def add_timestamp(func):
"""装饰器:把当前系统时间追加到文件末尾,并打印到控制台最后一行"""
@functools.wraps(func)
def wrapper(file_path, content, *args, **kwargs):
# 先执行原“写”操作
func(file_path, content, *args, **kwargs)
# 追加时间戳
timestamp = '\n# ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n'
with open(file_path, 'a', encoding='utf-8') as f:
f.write(timestamp)
print('[装饰器] 已追加时间戳:', timestamp.strip())
return wrapper
@add_timestamp
def write_file(file_path, content):
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
# --- 测试 ---
if __name__ == '__main__':
fname = 'demo.txt'
write_file(fname, 'hello world')
# 查看结果
with open(fname, encoding='utf-8') as f:
print('文件内容:\n', f.read())
运行图


7903

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



