函数有三个相关属性:ID, type, value
def 函数名:
均会分配一个ID名,类型都属于 class function, value: return value ,无的话则属于Nonetype
函数不加括号表示的是函数体,加括号表示函数的调用:这就是def关键字的作用
>>>a=10
>>>type(a)
>>><class 'int'>
>>>
>>>def func():
>>> pass
>>>type(func)
>>><class 'function'>
由此可见,他们的本质都是一样,有ID, type, value,唯一的不同就是函数是一种动态,代表是一种行为,函数是需要指令调用的,这个函数的调用就是在函数的名称后面直接加上(),决定这一性质不同是有关键字决定的,任何满足def 定义的语法,都是可调用的函数
函数本身作为一种行为,是无法直接同时实现另外一种行为的,也就是你无法直接调用函数内部的函数,但是可以通过间接来实现调用,因为函数有函数本体和函数调用两个部分组成的,只要将两者拆开使用就可以实现,我们可以通过调用函数体的方法,在函数内部实现调用就可以。
生成器是特殊的函数,可以实现函数的外带的调用,生成器包括两个基本函数,next()和send(arg)两个函数。