Python函数核心在于定义、调用、返回、作用域与闭包五环节;函数是一等对象,支持赋值、传参、返回;参数传递为传对象引用;无return默认返None;闭包通过__closure__保存外部变量。
Python函数的核心原理,其实就藏在“定义—调用—返回—作用域—闭包”这五个关键环节里。掌握它们,比死记语法更能帮你写出稳定、可复用的代码。
Python中函数是一等公民,可以赋值、传参、返回、存入容器。理解这点,才能自然过渡到高阶函数和装饰器。
id(func)验证函数对象的唯一性my_print = print),再调用它,效果完全一样[len, str, int],然后循环调用,体会“行为即数据”所有参数都是对象的引用,但是否修改原对象,取决于对象是否可变。
str.replace())返回新对象,也不影响原变量.append()或dict[key] = val会改变原对象;但若在函数内重新赋值(如lst = [1,2]),则断开引用,不影响外部data = data.copy()(list/dict)或data = data[:] (切片)没写return的函数,默认返回None。这个隐式返回常是bug源头——比如误把list.sor结果赋给变量,结果得到None。
t()
print(type(my_func())),尤其调用第三方库函数时save_to_db() vs format_name()
return False或raise ValueError,别层层缩进局部变量在函数返回后通常被销毁,但闭包通过__closure__属性保留对外部自由变量的引用。
def make_adder(n): return lambda x: x + n快速生成加法器,每个返回的lambda都“记住”了自己的n
adder5 = make_adder(5); adder5.__closure__[0].cell_contents → 输出5
lambda x=i: x