Victor0321 发表于 2022-4-10 20:32:41

内嵌函数

求大神解释下这两个的区别,,加括号和不加括号有什么区别呢。。

wp231957 发表于 2022-4-10 20:34:42

不带括号表示地址,地址后面加括号表示调用

Victor0321 发表于 2022-4-11 16:16:35

wp231957 发表于 2022-4-10 20:34
不带括号表示地址,地址后面加括号表示调用

emmm 听的不是特别清晰 能举个小小的例子让我明白下么。。。第一次接触编程的函数

wp231957 发表于 2022-4-11 16:31:07

Victor0321 发表于 2022-4-11 16:16
emmm 听的不是特别清晰 能举个小小的例子让我明白下么。。。第一次接触编程的函数

#先看一个普通的函数
def add(a,b):
    return a+b

#看正常调用
print(add(5,6))
#看一下另类调用
wp=add
print(wp(5,6))

#这里看一下嵌套函数
def add(a,b):
    def sub(c,d):
       return c-d
    return sub(a,b)

#看一下调用
print(add(5,6))
#看一下另类调用
def add(a,b):
    def sub(c,d):
       return c-d
    return sub

print(add(5,6)(5,6))
print(add(5,6)(15,6))

Victor0321 发表于 2022-4-11 17:12:50

wp231957 发表于 2022-4-11 16:31
#先看一个普通的函数
def add(a,b):
    return a+b


#看一下另类调用
def add(a,b):
    def sub(c,d):
       return c-d
    return sub
我试了试pirnt(add(5,6))显示的是函数的地址。。所以 这个add(5,6)()我可以不可以在这个例子中就等于是sub()
<function add.<locals>.sub at 0x00000167C272B0A0>

wp231957 发表于 2022-4-11 18:03:04

Victor0321 发表于 2022-4-11 17:12
#看一下另类调用
def add(a,b):
    def sub(c,d):


对的,实际上我举这个例子是有些瑕疵的
你知道咋回事就行了

Victor0321 发表于 2022-4-11 19:39:27

wp231957 发表于 2022-4-11 18:03
对的,实际上我举这个例子是有些瑕疵的
你知道咋回事就行了

嗯嗯我大概理解了 意思了。。放在实际的应用中 比如我定义了下面这个power()函数,这样写是不是有问题啊 ,最后外层的这个函数应该是return exp_ 函数的引用,所以不应该是返回的是exp_ ()的值或者说是调用

def power(exp):
    def exp_ (base):
      return base ** exp
    return exp_()

wp231957 发表于 2022-4-11 19:57:03

Victor0321 发表于 2022-4-11 19:39
嗯嗯我大概理解了 意思了。。放在实际的应用中 比如我定义了下面这个power()函数,这样写是不是有问题 ...

这个属于返回值,那么应该保证形参一致
比如你这个实际形参是一个,而你调用的参数是0个,这就是不可以的
页: [1]
查看完整版本: 内嵌函数