闭包函数之函数加括号和不加括号的意义


import time

# 闭包函数
def outer():
    x = 100

    def inner():
        print(x)

    return inner

fun = outer()

print(fun)  #函数不加括号,调用的是函数本身【function】
# <function outer.<locals>.inner at 0x0000000001F151E0>

time.sleep(5)
fun()       #函数加括号,调用的是函数的return结果。
time.sleep(5)
print(fun())    #函数自带返回值None

time.sleep(3)
fun()

func(1)    #这个会报错,因为func()代表的是函数的运行结果,这个1 什么也不是

原文地址:https://www.cnblogs.com/ludundun/p/11518695.html

时间: 2024-09-30 08:14:55

闭包函数之函数加括号和不加括号的意义的相关文章

函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别

##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) f(1800,30) """有几个参数传几个参数,形参对应实参,一个也不能少""" ''' 2.函数名加括号与不加括号的区别: 函数名加括号与不加括号的区别: --在这个函数中,return返回的是inner, 内部其实是返回inner函数的运行结

new一个对象后面加括号与不加括号的区别

new一个对象后面加括号与不加括号的区别 ? 加括号与不加的区别 (1)加括号 ??? 1. 若括号为空,即无实参项,那么理解为调用默认构造函数: ??? 2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或 复合默认构造函数. (2)不加括号 调用默认构造函数,或复合默认构造函数. 默认构造函数 与 复合默认构造函数的区别 默认构造函数:编译器会为每一个类默认提供一个构造函数,称之为默认构造函数.默认构造函数一般参数为空. 复合默认构造函数:一个由用户自定义的所有形式参数都赋有默认值的

js调用函数时加括号与不加括号的区别

函数名其实就是指向函数体的指针 不加括号, 可以认为是查看该函数的完整信息, 不加括号传参,相当于传入函数整体 加括号 表示立即调用(执行)这个函数里面的代码(花括号部分的代码) 例2: function demo(){    return 1}var a=demovar b=demo()a是demo函数,b是1

new对象时,类名后加括号与不加括号的区别

[1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 // 空类 5 class empty 6 { 7 }; 8 9 // 一个默认构造函数,一个自定义构造函数 10 class Base 11 { 12 public: 13 Base() 14 { 15 cout << " default Base construct " &

调用类时,加括号和不加括号的区别

class ListNode: def __init__(self, x): self.val = x self.next = None a = ListNodea.val = 1print(ListNode.val) # 返回 1 class ListNode2: val = 1 def __init__(self, x): self.val = x self.next = None print(ListNode2.val) # 返回 1 b = ListNode(3) # 这是在实例化对象,

typeof加括号和不加括号的区别

typeof是一个一元运算符,并不是一个函数或者语句,所以可以用括号包裹起来tostring的用法      返回该对象的字符串表示.通常, toString 方法会返回一个“以文本方式表示”此对象的字符串.结果应是一个简明但易于读懂的信息表达式.建议所有子类都重写此方法.Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例) 原文地址:https://www.cnblogs.com/zycs/p/12340947.html

关于vue ,v-on 绑定事件时,函数名加括号和不加括号的区别

作者:DDFE链接:https://www.zhihu.com/question/55753541/answer/146504270来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 从官方的文档 事件处理器 - Vue.js 中可以看出通过 `v-on` 中既可以执行一段代码.一个方法.内联 JavaScript 语句,根据不同的情况 Vue 会做不同的处理,具体可以从源码中可以看出(2.1.10版本),在编译阶段,会根据抽象HTML语法树生成代码,从 https:

js中给函数传参函数时,函数加括号与不加括号的区别

<!doctype html><html><head><script> function show() { alert("123"); } setInterval(show(),1000); //只会弹出一次,调用setInterval函数,   //传递给它的两个参数一个是show()函数的返回值,                                          //一个是1000ms,因此只会执行show函数一次 s

js中调用函数时加不加括号的问题

其实总结起来如下:函数只要是要调用它进行执行的,都必须加括号.此时,函数()实际上等于函数的返回值.当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码.不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码.它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行. 所以一般时候我们都是采用的是无括号的原因.这也是由于括号的二义性,因为括号是"函数调用运算符",相当于在执行这样