V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
winglight2016
V2EX  ›  Python

请教大佬,函数后面又加一个参数,这是什么意思?

  •  
  •   winglight2016 · 2018-01-11 21:19:15 +08:00 · 3357 次点击
    这是一个创建于 2509 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下:

    input_tensor = Input(shape=(64,))

    x = layers.Dense(32, activation='relu')(input_tensor)

    给个关键字我去查一下也是好的^_^

    这种函数式语言对 java 程序员太不友好了~~~

    15 条回复    2018-01-14 10:56:21 +08:00
    mx1700
        1
    mx1700  
       2018-01-11 21:54:25 +08:00 via Android
    因为函数的返回值还是个函数
    whow
        2
    whow  
       2018-01-11 23:39:27 +08:00   ❤️ 1
    柯里化
    azh7138m
        3
    azh7138m  
       2018-01-12 08:52:57 +08:00 via Android
    1 楼正解
    返回值是个函数
    XIVN1987
        4
    XIVN1987  
       2018-01-12 09:14:27 +08:00
    python 里不光函数能调用,callable 的对象也能像函数那样调用

    对象想要 callable,只需要它的类实现__call__()方法即可,,这样 objectA()就相当于 objectA.__call__()
    mooncakejs
        5
    mooncakejs  
       2018-01-12 09:30:11 +08:00 via iPhone
    JAVA 也能这么用的
    NaVient
        6
    NaVient  
       2018-01-12 10:14:44 +08:00
    Java 也能这么用的
    winglight2016
        7
    winglight2016  
    OP
       2018-01-12 12:10:23 +08:00
    @whow 难怪觉得有点眼熟,scala 里面就是这样的
    @mooncakejs
    @NaVient
    java 怎么这样用的?根本不支持函数式啊,lambda 不能算吧
    @XIVN1987 哦呵呵,明白了
    @mx1700 感谢大佬,我后来想了想,只能这样解释了
    hcnhcn012
        8
    hcnhcn012  
       2018-01-12 12:21:39 +08:00 via iPhone
    Dence 可能是一个闭包结构,返回的是内层函数的引用,再加一个括号就形成内层函数的调用
    ryd994
        9
    ryd994  
       2018-01-12 12:46:05 +08:00 via Android
    @azh7138m,这不是 curry
    curry 是 f(a,b,c)也可以写作 f(a)(b)(c)
    Python 里少参数会直接报错的
    winglight2016
        10
    winglight2016  
    OP
       2018-01-12 19:45:06 +08:00
    @ryd994 克里化效果跟这个是一样的,也是返回一个函数来处理后面的参数
    azh7138m
        11
    azh7138m  
       2018-01-13 00:08:17 +08:00 via Android
    @ryd994 你把 mx1700B 了吧?咱俩看到的不是一个一楼
    ryd994
        12
    ryd994  
       2018-01-13 00:26:22 +08:00 via Android
    @azh7138m 不,单纯点错人了,抱歉
    重新点一下 @whow
    这不是 curry,参见楼上上我说的
    quinoa42
        13
    quinoa42  
       2018-01-14 06:08:38 +08:00 via Android
    @ryd994 传入一个参数返回一个函数(这个函数再传入一个函数可以返回一个函数或返回结果)这样的过程就是 curry,无非有的语言有语法糖支持(比如 ML 系直接 fun a b c,racket 的(define (((f x) y) z)...)等等)有的语言没有罢了
    当然没有语法糖支持的语言里用 curry 很蛋疼就是了…
    ryd994
        14
    ryd994  
       2018-01-14 10:39:44 +08:00 via Android
    @quinoa42 wiki:In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument. Currying is related to, but not the same as, partial application.

    函数返回函数那叫 metaprogramming
    quinoa42
        15
    quinoa42  
       2018-01-14 10:56:21 +08:00 via Android
    @ryd994 确实是我用词不是很准确,但是确实这应该算 curried function,具体也可以参考你给的 wiki
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2597 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.