Python中没有名为function的内置函数,function是types.FunctionType的字符串表示;判断对象是否为函数应使用callable()或isinstance(obj, types.FunctionType)。

Python 里没有叫 function 的内置函数,function 是类型名(type 的一个实例),不是可调用的内置函数。你查不到 help(function),也调用不了 function(...) —— 它根本不是函数。
怎么判断一个对象是不是函数?用 callable() 和 isinstance(..., types.FunctionType)
想确认某东西是不是函数,别猜,用标准方式:
-
callable(obj)最常用:返回True表示能加括号调用(包括函数、类、有__call__的实例) - 要严格限定“就是 def 或 lambda 定义的函数”,得导入
types:import types def f(): pass isinstance(f, types.FunctionType) # True isinstance(len, types.FunctionType) # False(len 是 builtin_function_or_method)
-
types.FunctionType不涵盖内置函数(如print、len)、@staticmethod、@classmethod,它们属于不同类型
type(lambda: None) 返回什么?为什么不是 function?
交互式环境里敲:
type(lambda: None) #注意:这里的
function 是类名显示,不是字符串 'function',也不是可导入的顶层名称。它等价于 types.FunctionType,但你不能直接写 function 当类型用:
-
isinstance(f, function)→NameError: name 'function' is not defined - 必须写
isinstance(f, types.FunctionType) -
function这个名字只在repr和__name__里出现,不作为内置标识符存在
常见误用:把 function 当成构造器或类型注解
以下写法全错:
-
f = function(lambda x: x)→NameError(没有这个构造函数) -
def g(x: function) -> function:→ 类型检查器报错(应写Callable或types.FunctionType) -
from builtins import function→ 找不到该名字
正确替代方案:
PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍
立即学习“Python免费学习笔记(深入)”;
- 构造可调用对象:用
lambda、def、或types.FunctionType(code, globals, name)(极少见,需字节码知识) - 类型提示:用
from typing import Callable,例如Callable[[int], str]
真正需要区分函数类型时,types 模块里的具体类型(FunctionType、BuiltinFunctionType、MethodType)比凭名字猜测可靠得多;而日常判断“能不能调用”,callable() 就够了——别被 的显示误导去搜不存在的内置函数。









