Python 语言本身不提供名为 fun() 的内置函数;fun() 仅是教程中常用的自定义函数占位符,需用 def 定义后才能调用,且调用前必须先定义。

fun() 函数名只是占位符,Python 中没有内置的 fun()
直接说结论:Python 语言本身不提供名为 fun() 的内置函数。你看到的 fun() 通常只是教程或示例中随意起的函数名(类似 foo()、test()),代表“某个自定义函数”。真正执行的是你自己用 def 定义的那部分逻辑。
定义 fun() 的语法和关键点
定义一个叫 fun() 的函数,本质就是写一段可复用的代码块,并绑定到名字 fun 上。它必须以 def 开头,后跟括号和冒号:
def fun():
print("Hello from fun!")
注意以下几点:
-
def是语句,不是表达式 —— 它不会返回函数对象以外的值,也不会自动执行函数体 - 函数名
fun是变量,指向函数对象;你可以后续重新赋值,比如fun = lambda: "replaced" - 函数体必须缩进,且至少有一条语句(哪怕只是
pass) - 函数定义时不会运行内部代码,只有调用时才执行
调用 fun() 前必须先定义
Python 是顺序执行的脚本语言。如果在定义前就写 fun(),会触发 NameError: name 'fun' is not defined。
立即学习“Python免费学习笔记(深入)”;
常见错误写法:
fun() # ❌ 运行时报错:NameError
def fun():
return 42
正确顺序:
def fun():
return 42
result = fun() # ✅ 此时才执行函数体,result 得到 42
补充说明:
- 函数可以定义在模块顶部、类内部、甚至另一个函数里(闭包场景)
- 如果定义在条件分支中(如
if True:),只要该分支被执行过,函数就可用 - 交互式环境(如 IPython)中,定义和调用可在不同 cell,但需确保定义 cell 已运行
函数执行时发生了什么
当你写下 fun() 并回车,Python 解释器实际做了三件事:
- 查名字空间:在当前作用域(local → enclosing → global → built-in)查找键为
'fun'的对象 - 确认可调用:检查该对象是否实现了
__call__方法(函数对象天然支持) - 创建新栈帧:分配局部变量空间,执行函数体,返回值(或
None)传回调用点
一个小验证:
def fun():
return "done"
print(fun.name) # 输出 'fun'
print(type(fun)) # 输出 ''
print(callable(fun)) # 输出 True
容易忽略的一点:函数对象本身是第一类对象,可以被赋值、传参、存入列表,而不仅限于“被调用”。fun 和 fun() 是完全不同的东西 —— 前者是函数,后者是调用结果。










