type
status
date
slug
summary
tags
category
icon
password
一、函数的可变参数与解包
1、 args
(可变位置参数)
在函数定义中,单星号
*args
用于收集额外的位置参数,并将它们存储为一个元组。2、 *kwargs
(可变关键字参数)
双星号
**kwargs
用于收集额外的关键字参数,并将它们存储为一个字典。3、 位置参数解包 与 关键字参数解包
在函数调用时,单星号
*
可以用于解包序列或可迭代对象,将其元素作为单独的位置参数传递;双星号 **
可以用于解包字典,将其键值对作为独立的关键字参数传入函数。

4、 混用 *
和 **
在定义时,
*args
必须位于 **kwargs
之前;在调用时,也可以同时使用 *
和 **
进行多重解包。二、lambda
表达式与 filter
lambda
表达式用于定义匿名函数,适合编写简短的单行函数。结合内置函数
filter
,可以对可迭代对象进行筛选。filter(function, iterable)
会返回一个迭代器,包含所有使 function(item)
返回 True
的元素。三、高阶函数:map
、filter
、sorted
map(func, iterable)
:将func
应用于iterable
中的每一个元素,返回一个迭代器。
filter(func, iterable)
:如上,对元素进行过滤,返回迭代器。
sorted(iterable, key=None, reverse=False)
:根据参数key
(可选)和reverse
(排序顺序)返回一个新的已排序列表,不改变原序。
sort(key=None, reverse=False)
:与sorted
的使用方法类似,不过无返回值,直接改变原序。
- 实现
sort

四、闭包、LEGB 作用域与 global
/nonlocal
1. 闭包(Closure)
闭包是指在一个函数内部定义另一个函数,并且内部函数引用了外部函数的局部变量,此时即使外部函数已经执行完毕,内部函数仍能访问这些变量。
2. LEGB 作用域
Python 在查找变量时遵循 LEGB 原则:
Local
:当前函数的局部作用域
Enclosing
:嵌套函数的外层作用域
Global
:模块顶层作用域
Builtins
:内置命名空间(如len
、list
等)
3. global
与 nonlocal
global
用于在函数内部声明对全局变量的引用,并可直接修改它。
nonlocal
用于在嵌套函数中声明对外层(非全局)作用域变量的引用,从而实现对该变量的修改。
五、每日一题
题目:1290. 二进制链表转整数
给你一个单链表的引用结点
head
。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。
最高位 在链表的头部。
示例 1:

示例 2:
解题:
- 考虑到直接取得链表长度进行计算即可
- 突然发现
ListNode
类没有实现__len__
,所有没办法直接用len()
,那就先遍历一遍,并且也不能使用enumerate(head)
,那就直接用i循环吧
- 看了一下官方题解
- 确实忽略了二进制和十进制转换应该可以用累乘的方法,这样就减少了遍历一遍获取长度的循环
- 作者:sisui
- 链接:https://www.sisui.me//article/py-args-unpack-lambda-map-closure-leetcode1290
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章