LINUX.ORG.RU
ФорумTalks

Питон такой питон

 


1

1
>>> import math
>>> math.pi
3.141592653589793
>>> math.pi=1
>>> math.pi
1

ну что я могу сказать. Геттеры и сеттеры как в C# рулят и позволяют избежать подобного в принципе

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 2)

Ответ на: комментарий от Rodegast

Нет.

▲ ~ python 
Python 3.7.6 (default, Dec 18 2019, 19:23:55) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> math.pi
3.141592653589793
>>> def circle_length(r):
...   return 2 * math.pi * r
... 
>>> circle_length(1)
6.283185307179586
>>> math.pi = 4
>>> circle_length(1)
8
 ▲ ~ ghci
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Prelude> pi
3.141592653589793
Prelude> let circleLen r = 2 * pi * r
Prelude> circleLen 1
6.283185307179586
Prelude> let pi = 4
Prelude> circleLen 1
6.283185307179586
hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

На существующий код, в отличии от Пыхтона, твой трюк не повлияет.

От этого не легче, ибо на «не существующий» повлияет...

Prelude> let pi = 1
Prelude> let circleLen r = 2 * pi * r
Prelude> circleLen 1
2

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Ты совсем жопу с пальцем сравниваешь? В одном случае, тебе во-первых компилятор скажет что ты хрень делаешь, и во-вторых это повлияет в худшем случае только на код, который это явно видит. Во втором же ты можешь где-то в совершенно левой библиотеке переопределить глобальную переменную, и весь проект полетит к чёрту. Примерно как #define true false в stdio.h сунуть.

hateyoufeel ★★★★★
()

Человеки такие ...

Всем же известно, что пи это не 3.141592653589793ичтотамдальше, а то, что автор конкретного текста решил себе так называть.

DonkeyHot ★★★★★
()

ОП, ты смеёшься над тем, что при необдуманном использовании является багом (позволяет выстрелить себе в ногу), а при использовании с умом является фичей.

xenith
()

Это очень классная фича, предоставляет возможность патчить и кастомизовать сторонние либы без бойлерплейта и необходимости форкать.

alienclaster ★★★
()

Геттеры и сеттеры как в C# рулят

C# хорош, очень хорош. Мигель не зря пытался его перенести сюда.

Wizard_ ★★★★★
()
Ответ на: комментарий от Rodegast
pi = 4

main = print pi

[1 of 1] Compiling Main             ( test.hs, test.o )

test.hs:3:14: error:
    Ambiguous occurrence ‘pi’
    It could refer to either ‘Prelude.pi’,
                             imported from ‘Prelude’ at test.hs:1:1
                             (and originally defined in ‘GHC.Float’)
                          or ‘Main.pi’, defined at test.hs:1:1
  |
3 | main = print pi
  |              ^^
iamweasel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.