RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子467圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# Python

Python 递归函数怎么用?有什么限制?

递归 = 函数调用自身,必须有基线条件(终止条件)和递归条件(问题规模缩小)。经典:阶乘、斐波那契、树遍历、二分查找。限制:① 默认递归深度上限 1000(sys.setrecursionlimit 可调,但深递归会栈溢出或拖慢);② 无尾递归优化,深递归性能差。建议:深层次用迭代或栈模拟;递归问题注意重复计算(用 lru_cache 记忆化,如斐波那契)。

2
# Python

Python 函数是对象吗?一等公民体现在哪里?

是。Python 一切皆对象,函数也是对象:① 可赋值给变量(f = func);② 可作参数传递(回调);③ 可作返回值(闭包/工厂);④ 可存入数据结构(list/dict 存函数实现策略分发);⑤ 有属性(__name__、__doc__、__defaults__);⑥ 可被装饰器包装。应用:命令模式、策略模式(字典映射函数)、中间件链、事件回调。函数对象配合 __call__ 的类实例也可调用。

3
# Python

Python 的 lambda 匿名函数怎么用?什么时候用?

lambda 参数: 表达式,返回单行表达式的函数对象(无语句、无 return 关键字)。典型应用:作为参数传给 sorted(key=lambda x: x[1])、map/filter、min/max(key 参数)、GUI 回调。限制:只能写表达式,复杂逻辑应定义具名函数(可读性)。注意:lambda 在循环中创建会共享外层变量(闭包陷阱);lambda x: x*x 与普通 def 等价。

5
# Python

Python 的闭包是什么?nonlocal 怎么用?

闭包 = 内部函数 + 引用外部函数作用域的变量(自由变量),即使外部函数已返回,内部函数仍能访问这些变量。形成条件:嵌套函数 + 引用外部变量 + 外部函数返回内部函数。用途:计数器、装饰器、延迟计算。nonlocal:在嵌套函数中声明变量引用外层函数作用域(类似 global 对模块级),用于修改闭包变量。注意:闭包陷阱——循环中创建闭包共享同一变量(用默认参数绑定或工厂函数修复)。

6
# Python

Python 函数参数有哪几种类型?*args 和 **kwargs 怎么用?

参数类型:① 位置参数;② 默认参数(def f(a, b=1),注意默认值不能是可变对象);③ 关键字参数(f(b=2, a=1));④ 可变位置参数 *args(收集成元组);⑤ 可变关键字参数 **kwargs(收集成字典);⑥ 强制关键字参数(def f(a, *, b),b 必须关键字传);⑦ 仅位置参数 /(Python 3.8+)。* 与 ** 也可用于解包:f(*[1,2])、f(**{'a':1})。顺序:位置、*ar…

7
# Python

Python 的注释和文档字符串 docstring 怎么用?

注释 # 用于解释代码(行内/整行),不参与执行;文档字符串 docstring 用三引号("""...""" 或 '''...''')写在模块/类/函数第一行,描述用途与用法,可通过 obj.__doc__ 获取、help(obj) 查看,工具可提取生成文档(Sphinx)。规范(PEP 257):函数 docstring 写做什么/参数/返回/异常;用 typing 注解配合;用 # noqa、# type: ignore 等特殊注…

8
# Python

Python 中 break、continue、pass、return 的区别?

break:跳出当前整个循环(for/while),不再执行后续迭代;continue:跳过本次迭代,进入下一次;pass:空语句占位,什么都不做(语法需要时用,如空类/空函数/未实现的 if 分支);return:结束当前函数并返回值(无值返回 None)。注意:break/continue 只作用于最内层循环;嵌套循环跳出外层需标志位或函数封装;while-else/for-else:循环未 break 正常结束时执行 else 块…

9
# Python

Python 的位运算有哪些?运算符优先级?

位运算符:&(与)、|(或)、^(异或)、~(取反)、<<(左移,乘 2)、>>(右移,整除 2)。应用:权限标志位、奇偶判断(x & 1)、快速乘除 2 的幂、位图去重。优先级(高到低):** > 一元 +-~ > * / // % > +- > << >> > & > ^ > | > 比较 > not > and > or。注意:** 与负号(-2**2 = -4)、and/or 短路求值、比较可链式(a < b < c)。

10
# Python

Python 字符串格式化有哪几种方式?

① % 格式化:'%s %d' % (a, b)(老式);② str.format:'{} {}'.format(a, b),支持位置/关键字/格式说明(:0.2f);③ f-string(推荐):f'{name} 今年 {age} 岁',Python 3.6+,性能最好、可读性最高,支持表达式与 !r/!s 转换;④ string.Template:$name 替换(少用)。f-string 注意事项:嵌套引号(3.12+ 支持同引号…