python中在函数后面有一个小括号和一个中括号是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中在函数后面有一个小括号和一个中括号是啥意思相关的知识,希望对你有一定的参考价值。

tf.shape(features["image"])[0] 和 all_logits[sup_bsz : sup_bsz + aug_bsz] 分别是什么意思呢

函数带小括号表示执行这个函数,函数如果带参数的话也会输入到这个小括号里,如果后面还有一个
方括号
的话,说明这个函数的返回是一个可迭代对象,比如字符串,
元组
,列表,集合等之类的数据。
tf.shape(features["image"])[0],后面的
中括号
表示取返回结果的索引值为0的值
all_logits[sup_bsz
:
sup_bsz
+
aug_bsz]
是切片操作
参考技术A ()是要在小括号里面传函数参数,后面的[]是因为函数返回一个数组/列表所以用[0]取得索引为0处的值

匿名函数和闭包

1.匿名函数

通过自我执行来执行匿名函数

1 (function(){...})()  // 前面小括号是匿名函数,后面小括号是执行

函数里面放一个匿名函数

1 function box(){
2   return function(){
3     return ‘haha‘;  
4   }  
5 }
6 var b = box();
7 alert(b())
// alert(box()()) 不建议这么写

闭包

定义:有权访问另一个函数作用域中的变量的函数(在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量)

1. 使用匿名函数实现局部变量驻留内存中从而累加

 1 function box(){
 2     var age = 100;
 3     return function(){
 4         age++;
 5         return age;
 6     }
 7 }
 8 var b = box();
 9 aler(b());
10 aler(b());
11 aler(b());
12 aler(b());
b = null // 解除引用,等待垃圾回收

ps:由于闭包作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存。过度使用闭包会导致性能下降,建议在非常必要的时候使用闭包

2.

 1 function box(){
 2         var arr = [];
 3         for(var i = 0; i < 5; i++){
 4             arr[i] = (function(num){
 5                 return function(){
 6                     return num;
 7                 }
 8             })(i);  // 及时执行自己
 9         }
10         return arr;
11     }
12     var b = box();
13     for(var i = 0; i < 5; i++){
14         alert(b[i]( ));
15     }

3.关于this对象(闭包不属于object,this指向window)

 1 var user = ‘window‘
 2 var box = {
 3     user: ‘box‘,
 4     getUser: function(){
 5         var that = this;
 6         return function(){
 7             // return this;
 8             return that.user;
 9         }
10     }
11 }
12 // alert(box.getUser()());  // 指向window对象
13 // alert(box.getUser().call(box));  // call,通过对象冒充指向box
14 alert(box.getUser()())

 

以上是关于python中在函数后面有一个小括号和一个中括号是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

python函数后面有多个括号怎么理解?

对python函数后面有多个括号的理解?

立即执行函数

JS:javascript 函数后面有多个小括号是怎么回事?f( )( )( )...

字符串对象

创建集合的时候,集合后面的尖括号填一个泛型,那么这个泛型是必须存在的类吗?