cambaluc的个人博客分享 http://blog.sciencenet.cn/u/cambaluc

博文

C语言及Python中两括号并一起的语法理解

已有 1020 次阅读 2022-1-23 12:39 |个人分类:Python|系统分类:科研笔记

C语言及Python中出现两括号并一起的情况,如 pfun(-5)(20),都是合法的表示,其实就是函数调用中又用另外的函数做了参数,C语言中涉及函数指针的概念。写如下两示例协助理解:

//C语言

#include "stdafx.h"

int rfun1(int x)

{ printf("rfun1:\n");

  return x+x; 

}

int rfun2(int x)

{ printf("rfun2:\n");

  return x*x;

}

int (*pfun(int r))(int x)

{   printf("%d\n",r);

if(r>0)

    return rfun1;

else

return rfun2;

  return 0;

}

int main(int argc, char* argv[])

   printf("%d\n", pfun(-5)(20));

   printf("%d\n", pfun(5)(20));

return 0;

}


#python示例:

def pfun(r):

    print(r)        

    def rfun1(x):

        print("rfun1:")

        return x+x

    def rfun2(x):

        print("rfun2:")

        return x*x

    if r>0:

        return rfun1

    else:

        return rfun2

    

print(pfun(-5)(20))

print(pfun(5)(20))


运行结果都是:

-5

rfun2:

400

5

rfun1:

40


在C语言中,int (*pfun(int r))(int x){ ... }表示定义了一个函数pfun,其返回类型是指向函数的指针型,其自身参数是int型r。由pfun返回的值是函数,这个返回的函数应该int型并且需要有int型参数x。


这些机制在编写复杂程序时可能用得上。如人工神经网络中连接两个层可能用到:x=Dense(,...)(inputs)



https://m.sciencenet.cn/blog-797552-1322289.html

上一篇:胡同的白蜡树
下一篇:大雪和春花

3 马鸣 宁利中 罗春元

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-8-11 22:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部