Python fun()函数_定义与执行fun()函数的完整流程

14次阅读

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

Python fun()函数_定义与执行fun()函数的完整流程

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

容易忽略的一点:函数对象本身是第一类对象,可以被赋值、传参、存入列表,而不仅限于“被调用”。funfun() 是完全不同的东西 —— 前者是函数,后者是调用结果。

text=ZqhQzanResources