[Python-Dev] PEP 362 Third Revision

Yury Selivanov yselivanov.ml at gmail.com
Thu Jun 14 22:45:08 CEST 2012


On 2012-06-14, at 4:24 PM, Benjamin Peterson wrote:

> 2012/6/14 Alexandre Zani <alexandre.zani at gmail.com>:
>> On Thu, Jun 14, 2012 at 12:57 PM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>>> On Thu, 14 Jun 2012 12:46:38 -0700
>>> Ethan Furman <ethan at stoneleaf.us> wrote:
>>>> 
>>>> This is no different from what we have with strings now:
>>>> 
>>>> --> 'aA'.islower()
>>>> False
>>>> --> 'aA'.isupper()
>>>> False
>>>> --> 'a'.islower()
>>>> True
>>>> --> 'A'.isupper()
>>>> True
>>>> 
>>>> We know that a string cannot be both all-upper and all-lower at the same
>>>> time;
>>> 
>>> We know that because it's common wisdom for everyone (although who knows
>>> what oddities the unicode consortium may come up with in the future).
>>> Whether a given function argument may be of several kinds at the same
>>> time is much less obvious to most people.
>> 
>> Is it obvious to most people? No. Is it obvious to most users of this
>> functionality? I would expect so. This isn't some implementation
>> detail, this is a characteristic of python parameters. If you don't
>> understand it, you are probably not the audience for signature.
> 
> Consequently, the "kind" model should match up very well with their
> understanding that a parameter can only be one "kind" at a time.

I myself now like the 'kind' attribute more than 'is_*' family.
Brett and Larry also voted for it, as well the majority here.

I'll amend the PEP this evening to replace 'is_args', 'is_kwargs',
and 'is_keyword_only' with a 'kind' attribute, with possible
values: 'positional', 'vararg', 'varkw', 'kwonly'.

Parameter class will have four constants, respectively:

     class Parameter:
         KIND_POSITIONAL = 'positional'
         KIND_VARARG = 'vararg'
         KIND_VARKW = 'varkw'
         KIND_KWONLY = 'kwonly'

'Parameter.is_implemented' will be renamed to 'Parameter.implemented'

Is everybody OK with this?  Thoughts?

I, for instance, like 'varkwarg' more than 'varkw' (+ it is more
consistent with **kwargs)

-
Yury


More information about the Python-Dev mailing list