-
-
Notifications
You must be signed in to change notification settings - Fork 30.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make *start* usable as a keyword argument for sum(). #78818
Comments
Currently, we can write: >>> sum(range(10), 50)
95 What we want to allow: >>> sum(range(10), start=50)
95 The positional form would still be allowed. |
+1 agreed. |
Woo! Thanks Raymond! |
I suggest also allowing the first argument to be a keyword named sequence= as well. (along the philosophy of positional only arguments on APIs that happen to be implemented in C in CPython are a bad legacy) pypy already uses these names: |
Is not this a duplicate of bpo-31141? |
There doesn't seem to be any performance regression hoping that I am doing the benchmarks correctly. Some numbers for the PR. # Master git checkout master $ cpython git:(master) ./python.exe
Python 3.8.0a0 (heads/master:731ff68eee, Sep 12 2018, 11:19:46)
[Clang 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
$ cpython git:(master) repeat 10 ./python.exe -m timeit "sum(range(10), 50)"
500000 loops, best of 5: 635 nsec per loop
500000 loops, best of 5: 682 nsec per loop
500000 loops, best of 5: 637 nsec per loop
500000 loops, best of 5: 648 nsec per loop
500000 loops, best of 5: 618 nsec per loop
500000 loops, best of 5: 621 nsec per loop
500000 loops, best of 5: 653 nsec per loop
500000 loops, best of 5: 624 nsec per loop
500000 loops, best of 5: 671 nsec per loop
500000 loops, best of 5: 659 nsec per loop git fetch upstream pull/9208/head:sum-start-keyword $ cpython git:(sum-start-keyword) ./python.exe
Python 3.8.0a0 (heads/sum-start-keyword:71b890cd56, Sep 12 2018, 11:23:02)
[Clang 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
$ cpython git:(sum-start-keyword) repeat 10 ./python.exe -m timeit "sum(range(10), 50)"
500000 loops, best of 5: 655 nsec per loop
500000 loops, best of 5: 662 nsec per loop
500000 loops, best of 5: 669 nsec per loop
500000 loops, best of 5: 656 nsec per loop
500000 loops, best of 5: 666 nsec per loop
500000 loops, best of 5: 642 nsec per loop
500000 loops, best of 5: 638 nsec per loop
500000 loops, best of 5: 628 nsec per loop
500000 loops, best of 5: 684 nsec per loop
500000 loops, best of 5: 648 nsec per loop
$ cpython git:(sum-start-keyword) repeat 10 ./python.exe -m timeit "sum(range(10), start=50)"
500000 loops, best of 5: 637 nsec per loop
500000 loops, best of 5: 677 nsec per loop
500000 loops, best of 5: 649 nsec per loop
500000 loops, best of 5: 660 nsec per loop
500000 loops, best of 5: 692 nsec per loop
500000 loops, best of 5: 704 nsec per loop
500000 loops, best of 5: 638 nsec per loop
500000 loops, best of 5: 659 nsec per loop
500000 loops, best of 5: 637 nsec per loop
500000 loops, best of 5: 699 nsec per loop I haven't tested the other PR serhiy mentioned since it has merge conflicts and I think it uses the same approach with argument clinic. Thanks |
Discussed exposure of the first argument with GPS and agreed that we don't want people writing API sum(iterable=[10,20,30], start=0). Serhiy, yes this is a duplicate/superseder of bpo-31141. Will close that at well. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: