62659


Pythonの文法について質問です。  
Pythonで()が2連続するのはどういう用法、意味があるのでしょうか。  
Amazon alexaのskill開発にあたり、デフォルトのpythonコードに下記のようなコードがあり疑問に思ったため質問いたしました。

[code]

    return ask_utils.is_request_type("LaunchRequest")(handler_input)
    
[/code]

初歩的な質問ですが、ご回答いただけると幸いです。


CC BY-SA 4.0
2020-01-30T06:48:54.933
62658
2020-01-30T07:00:04.407
32622
question
python python3
Pythonで括弧()が2連続する用法について


`ask_utils.is_request_type` は関数を返す高階関数ではありませんか？

<https://python.atelierkobato.com/high/#outline__1_2>

[code]

    return ask_utils.is_request_type("LaunchRequest")(handler_input)
    
[/code]

は以下を一行で書いたものです。

[code]

    func = ask_utils.is_request_type("LaunchRequest")
    return func(handler_input)
    
[/code]

定義を確認してみると:  
<https://github.com/alexa/alexa-skills-kit-sdk-for-
python/blob/240e15f2bedbb03e2fb4fd85f96743bc9e8ff78c/ask-sdk-
core/ask_sdk_core/utils/predicate.py#L78-L97>

[code]

    def is_request_type(request_type):
        # type: (str) -> Callable[[HandlerInput], bool]
        """A predicate function returning a boolean, when request type is
        the passed-in type.
    
        The function can be applied on a
        :py:class:`ask_sdk_core.handler_input.HandlerInput`, to check
        if the input request type is the passed in request type.
    
        :param request_type: request type to be matched with the input's request
        :type request_type: str
        :return: Predicate function that can be used to check the type of
            the request
        :rtype: Callable[[HandlerInput], bool]
        """
        def can_handle_wrapper(handler_input):
            # type: (HandlerInput) -> bool
            return (handler_input.request_envelope.request.object_type ==
                    request_type)
        return can_handle_wrapper
    
[/code]

`can_handle_wrapper` が関数になっています。


CC BY-SA 4.0
2020-01-30T07:00:04.407
62659
2020-01-30T07:00:04.407
62
62658
answer