Comments 47
Да уж. Как-то ждешь больше жести от такой статьи, а там про то что можно букву не латинскую вставить.
Написали, что код должен выполняться на всех версиях, если иное не указано. Ок.
~$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> value = 11
>>> value = 32
>>> value
32
>>> # Ок, скопируем, как сказано в примере.
...
>>> value = 11
>>> valuе = 32
File "<stdin>", line 1
valuе = 32
^
SyntaxError: invalid syntax
>>> exit()
Так ведь там указано, что конкретно этот пример — только для третьего.
P.S. Если честно, я надеялся увидеть статью из разряда «ЯП: фрактал ...», но не сложилось (про нелюбимые мною PHP и JS написали, а про обожаемый питон нет).
Только сначала установите npm-пакет wtfpython
Чтобы проверить примеры на python? <собака-подозревака>
все так и задуманно.
странно удивлятся например что list — ссылочный тип и т.д.
То есть вообще не то же самое что с JS, где про сравнения я вот прям ну никак не скажу что же там получится в итоге, и в больших сомнениях что у меня есть ресурсы это держать в памяти.
со слешами меня просто расмешило.
а исключения через запятую… а почему не попробовали скажем три? удивились бы ошибке компиляции?
a, b = 257, 257
print('a id=', id(a), 'b id=', id(b))
a = 257
b = 257
print('a id=', id(a), 'b id=', id(b))
Результат, все переменные ссылаются на один объект:
a id= 140091158834992 b id= 140091158834992
a id= 140091158834992 b id= 140091158834992
Версия Python 3.5.3
В этом примере всё зависит от версии Python: PyPy, PyPy3 и CPython начиная с какой‐то из третьих версий (но точно больше 3.4.5: у меня именно она и a is not b
в данном случае) применяют какую‐то оптимизацию, из‐за чего a is b
в вашем случае, тогда как другие версии её не применяют. В общем, просто учитывайте, что 257 is 257
не гарантируется.
Только в интерпретаторе.
Надо в интерпретаторе запускать. Там код построчно выполняется и оптимизируется, соответственно, только одна строчка за раз. Если в виде .py файла запускать, то оптимизирован будет весь файл и тогда уже все 4 переменные будут указывать в одно место.
у меня в 3.5 работает а в 3.6 — нет.
>>> def foo(z=[]):
... print(z)
... z.append(1)
...
>>> foo()
[]
>>> foo()
[1]
>>> foo()
[1, 1]
>>> foo()
[1, 1, 1]
камон, ну конечно же мы читаем теги ^_^
Ещё из неочевидного:
>>> text = ''
>>> if text.split():
... print 'text contains whitespace'
>>> if text.split(','):
... print 'text contains comma'
text contains comma
>>> text.split()
[]
>>> text.split(',')
['']
В документации python2/3 написано что если от пустой строки сделать split
с разделителем None
то вернется пустой массив.
Если использовать разделитель отличный от None тогда вернется массив с одним элементом — ''
.
https://docs.python.org/2/library/string.html#string.split
https://docs.python.org/3/library/stdtypes.html#str.split
>>> i = 1
>>> ++++++i++++++++i++++++i+++i
4
>>> i--i
2
>>> i--i--i
3
>>> i-i
0
var1='text1'
def f1():
#if False: var1='' # Попробуй раскомментировать эту строчку
print var1
f1 ()
вот тут не поспоришь вполне себе WTF
Без if var1 — это просто глобальная переменная. Но если есть if, то даже несмотря на то, что ветвь никогда не выполнится, CPython нужно понять var1 — это локальная переменная или всё же глобальная. И нужно это понять ещё до выполнения функции.
{0: 'w', 1: 'f', 2: 'f'}
вот тут опечатка. я уж полез проверять, неужели действительно буква t пропадает
Что за чёрт, Python