Python 语法精炼6
海象运算符 海象运算符是指 :=,在 Python 3.8 中首次引入。 它的正式名称是 赋值表达式(Assignment Expression)。 这个符号之所以被称为“海象运算符”,是因为它看起来像一个海象的眼睛和獠牙::= 基本作用 它的作用是: 在表达式内部进行赋值操作(即“边计算边赋值”)。 也就是说,你可以在一个表达式中给变量赋值,而不用单独写一行。 使用普通赋值 123n = len(data)if n > 10: print(f"数据太长,有 {n} 个元素") 使用海象运算符 12if (n := len(data)) > 10: print(f"数据太长,有 {n} 个元素") n := len(data) 会先计算 len(data),将结果赋给 n,然后返回这个值用于比较。 应用场景 在条件语句中减少重复计算 12if (line := input("请输入: ")) != "exit": print(&...
Python 语法精炼5
星号表达式与解包 *args:函数接收任意位置参数 作用:把额外的位置参数收集为一个 tuple。 123456def summarize(*args): # args 是 tuple return sum(args)print(summarize(1, 2, 3)) # 6print(summarize()) # 0 要点 *args 可以出现在参数列表中任意位置,但惯例写在普通位置参数之后、关键字参数之前:def f(a, b, *args, kw=0): 在函数内部,args 是 tuple(不可变)。 多个星号参数不允许(只能有一个 * 捕获位置参数)。 常见用法 聚合任意数量的位置参数(统计、拼接等)。 与普通参数组合,做默认或强制参数数量检查。 注意: *args 捕获的是位置参数,不会捕获以 name=value 形式传入的关键字参数(那些会进 **kwargs)。 **kwargs:函数接收任意关键字参数 作用:把额外的关键字参数收集为一个 dict。 123456def show(**kwargs): # kwar...
压缩感知、稀疏优化、超分辨概念辨析
本文详细解析了压缩感知(CS)、稀疏优化(SO)、超分辨(SR)的概念以及应用。
Python 语法精炼4
列表推导式 基本语法 1[表达式 for 变量 in 可迭代对象 if 条件] 等价于: 1234result = []for 变量 in 可迭代对象: if 条件: result.append(表达式) 可以省略 if(表示不过滤); 表达式部分可以是任意计算或函数调用; 推导式返回的是一个新的列表对象。 常见用法 过滤元素 12[x for x in nums if x % 2 == 0]→ [2, 4] 嵌套循环 12[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]→ [(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)] 二维展开 12[x for row in matrix for x in row]→ [1,2,3,4,5,6] 技巧与陷阱 项目 要点 执行顺序 从左到右写,左外右内执行 可读性 不建议嵌套超过两层,否则不如显式 for 性能 较普通循环更快(底层优化),但不是“懒加载” 推导式 = 简洁高效的 ...
Shadowsocks 搭建
本文详细介绍了Shadowsocks部署VPN全流程,利用Clash软件实现代理。
Python 语法精炼3
迭代器机制 在 Python 中,iter() 是一个内置函数,用来从“可迭代对象”中创建一个迭代器对象。 类比理解: 想象你有一本书 📖(列表 [1,2,3]) nums 就是整本书(可迭代对象) it = iter(nums) 就像拿到一个“书签”(迭代器对象) 每次 next(it) → 翻到下一页,读一个内容 当读完所有页时,再 next(it) 就会报错:StopIteration 思考下面题目👇 123456nums = [1, 2, 3]it = iter(nums)print(next(it)) # 1nums.append(4) # nums = [1, 2, 3, 4]print(next(it)) # 2print(next(it)) # 3 可迭代对象 vs 迭代器 概念 含义 关键方法 示例 Iterable(可迭代对象) 能够被“遍历”的对象,可以用 for __iter__() list, tuple, str, set, dict Iterator(迭代器) 记得“当前取到哪”的对象,可用 next() __it...
Python 语法精炼2
Python 作用域与闭包机制 LEGB 规则 Python 查找变量时遵循四层作用域链: 层级 名称 说明 示例 L Local 当前函数内部的变量 函数形参或局部定义 E Enclosing 外层函数中的变量 闭包中的自由变量 G Global 当前模块的全局变量 脚本或模块顶层定义 B Built-in Python 内建命名空间 len, print, range 等 ✅ 查找顺序:Local → Enclosing → Global → Built-in UnboundLocalError 的根源 当 Python 发现函数中有对变量的赋值时,它会在编译阶段将该变量标记为“局部变量”。 12def inner(): x = x + 1 # 报错:局部变量 x 在赋值前被引用 简单来说,Python 在编译函数定义阶段(不是运行时)就会先扫描整个函数体,看哪些变量被赋值(=)。凡是出现过赋值的变量,Python 就认定它是局部变量(Local)。 解决方式: 告诉 Python “我想用外层变量”: nonlocal x → ...
Python 语法精炼1
Python 函数默认参数机制 默认参数的计算时机 默认参数在函数定义时计算一次,不是在函数调用时。 123def foo(x=[]): x.append(1) return x 每次调用 foo(),都会操作同一个列表对象。 可变对象的陷阱 默认参数如果是 可变对象(如 list, dict, set),就会在多次调用中共享状态。 12345678def add_item(item, bag=[]): bag.append(item) return bagadd_item('apple') # ['apple']add_item('banana') # ['apple', 'banana']add_item('cherry', []) # ['cherry']add_item('date') # ['apple', '...
UDP伪装
特别说明 以下所有操作,对于root、user用户,命令前加sudo均为可选项 环境准备 由于服务器端的udp2raw一直挂在后台,需要tmux进行管理 12sudo apt updatesudo apt install -y tmux 获取 udp2raw 二进制 访问官方 Release 页面:https://github.com/wangyu-/udp2raw-tunnel/releases 下载对应平台: * Linux:通常是 `.tar.gz` 或 `udp2raw_x86_64` 或 `udp2raw_amd64` * Windows:通常是 `.zip` 或 `udp2raw_x86_64.exe` 或 `udp2raw_mp.exe` Linux 解压 .tar.gz 123456789# 下载示例wget "https://github.com/wangyu-/udp2raw-tunnel/releases/download/<TAG>/udp2raw_binaries.tar.gz"# 创建文件夹后,解压mkdir udp2...
解线频调
本文主要介绍了解线频调的原理、公式推导以及与匹配滤波的等价性。




