type
status
date
slug
summary
tags
category
icon
password

一、函数的可变参数与解包

1、 args(可变位置参数)

在函数定义中,单星号 *args 用于收集额外的位置参数,并将它们存储为一个元组。

2、 *kwargs(可变关键字参数)

双星号 **kwargs 用于收集额外的关键字参数,并将它们存储为一个字典。

3、 位置参数解包 与 关键字参数解包

在函数调用时,单星号 * 可以用于解包序列或可迭代对象,将其元素作为单独的位置参数传递;双星号 ** 可以用于解包字典,将其键值对作为独立的关键字参数传入函数。
notion image

4、 混用 ***

在定义时,*args 必须位于 **kwargs 之前;在调用时,也可以同时使用 *** 进行多重解包。

二、lambda 表达式与 filter

lambda 表达式用于定义匿名函数,适合编写简短的单行函数。
结合内置函数 filter,可以对可迭代对象进行筛选。filter(function, iterable) 会返回一个迭代器,包含所有使 function(item) 返回 True 的元素。

三、高阶函数:mapfiltersorted

  • map(func, iterable):将 func 应用于 iterable 中的每一个元素,返回一个迭代器。
  • filter(func, iterable):如上,对元素进行过滤,返回迭代器。
  • sorted(iterable, key=None, reverse=False):根据参数 key(可选)和 reverse(排序顺序)返回一个新的已排序列表,不改变原序。
  • sort(key=None, reverse=False):与sorted的使用方法类似,不过无返回值,直接改变原序。
  • 实现sort
notion image

四、闭包、LEGB 作用域与 global/nonlocal

1. 闭包(Closure)

闭包是指在一个函数内部定义另一个函数,并且内部函数引用了外部函数的局部变量,此时即使外部函数已经执行完毕,内部函数仍能访问这些变量。

2. LEGB 作用域

Python 在查找变量时遵循 LEGB 原则:
  • Local:当前函数的局部作用域
  • Enclosing:嵌套函数的外层作用域
  • Global:模块顶层作用域
  • Builtins:内置命名空间(如 lenlist 等)

3. globalnonlocal

  • global 用于在函数内部声明对全局变量的引用,并可直接修改它。
  • nonlocal 用于在嵌套函数中声明对外层(非全局)作用域变量的引用,从而实现对该变量的修改。

五、每日一题

题目:1290. 二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。
最高位 在链表的头部。
示例 1:
notion image
示例 2:
 

解题:

  • 考虑到直接取得链表长度进行计算即可
  • 突然发现ListNode类没有实现__len__,所有没办法直接用len() ,那就先遍历一遍,并且也不能使用enumerate(head),那就直接用i循环吧
  • 看了一下官方题解
  • 确实忽略了二进制和十进制转换应该可以用累乘的方法,这样就减少了遍历一遍获取长度的循环
 
3.py-Python推导式及常见语句和内置函数总结5.py-递归函数及装饰器函数
Loading...