int принимает x в качестве аргумента ключевого слова в Python 2 - PullRequest
0 голосов
/ 26 апреля 2019

Следующие работы в Python 2.7 :

In [79]: int(x=5)
Out[79]: 5

.. но не работает в Python 3.6 :

In [31]: int(x=5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-53a6d75bfa9f> in <module>
----> 1 int(x=5)

TypeError: 'x' is an invalid keyword argument for int()

Похоже, что поведение было исправлено в Python 3 , чтобы не принимать x в качестве аргумента ключевого слова. Может кто-нибудь подтвердить, что мое понимание верно, или исправить меня? Спасибо.

Ответы [ 4 ]

1 голос
/ 26 апреля 2019

В Python 2 подпись int() равна

int(x=0)
int(x, base=10)

В Python 3 он почти идентичен:

int([x])
int(x, base=10)

Но в Python 2 было невозможно запретить аргументы ключевых слов. В Python 3 это так.

1 голос
/ 26 апреля 2019

Согласно документации Python2: https://docs.python.org/2/library/functions.html#int

Сигнатурой int является class int(x=0) или class int(x, base=10), которая поддерживает присвоения, как вы наблюдали в случае `int (x = 5)

Согласно документации Python3: https://docs.python.org/3/library/functions.html#int

Сигнатура int равна class int([x]) или class int(x, base=10), где x - это переменная, назначенная вне параметра функции, например int('5')

0 голосов
/ 26 апреля 2019

В pythong 3.6 вы должны разделиться запятой.Синтаксис метода int (): int (x = 0, base = 10)

Более подробную информацию вы можете найти в документации здесь: https://www.programiz.com/python-programming/methods/built-in/int

0 голосов
/ 26 апреля 2019

Да, подпись изменилась. Вы можете сравнить документы.

Python 3.x показывает эту подпись

class int([x])
class int(x, base=10)

Но Python 2.x показывает это:

class int(x=0)
class int(x, base=10)

Обратите внимание, как 3.x не принимает аргумент ключевого слова, а 2.x принимает.

...