Python (мфа: [ˈpʌɪθ(ə)n]; в русском языке встречаются названия пито́н[23] или па́йтон



Download 1,16 Mb.
bet22/38
Sana29.06.2022
Hajmi1,16 Mb.
#718246
1   ...   18   19   20   21   22   23   24   25   ...   38
Bog'liq
Python

Синтаксис и семантика[править | править код]
Несмотря на то, что одним из заявленных принципов дизайна Python является принцип наименьшего удивления, критики отмечают целый ряд архитектурных решений, которые могут вводить в заблуждение или вызывать недоумение у программистов, привыкших к другим распространённым языкам[160]. В их числе:

  • Отличие в принципе работы оператора присвоения по сравнению со статически-типизированными языками. В Python при присвоении значения копируется ссылка на объект, а не значение. При работе с простыми неизменяемыми типами возникает ощущение изменения значения переменной при присваивании ей значения, однако фактически присваивается ссылка на другое значение, например, при увеличении значения переменной типа int на 1 меняется ссылка, а не увеличивается значение по ссылке. Однако при работе с изменяемыми типами их содержимое можно менять по ссылке, поэтому при присвоении одной переменной ссылки на другую и последующем изменении значения в одной из двух переменных оно изменится в обоих переменных, что хорошо заметно при работе со списками[160][161]. При этом кортежи хоть и являются неизменяемыми, но могут хранить ссылки на изменяемые объекты, поэтому по факту кортежи тоже можно менять[162];

  • Отличие в поведении на некоторых типах «сокращённых» операторов, таких как += и их развёрнутой записи, хотя в большинстве языков «сокращённый» вариант — это просто краткая запись полного, и семантически они абсолютно эквивалентны. Пример с использованием x +=:


Аналогичный пример с использованием x = x +:

  • Жёсткая трактовка лексической области видимости, подобная используемой в JavaScript: даже если переменная получает значение в последней строке функции, её областью видимости является вся функция.

  • Путаница между полями класса и полями объекта: текущее значение поля класса инициализирует одноимённое поле объекта, но не при создании объекта, а при первой записи значения в данное поле.

class Colored:
color = "red"
obj1 = Colored()
print(obj1.color) # выводится исходное значение поля КЛАССА
Colored.color = "green" # изменение поля КЛАССА
print(obj1.color) # выводится значение поля КЛАССА
obj1.color = "blue" # изменяется поле ОБЪЕКТА и фиксируется его значение
Colored.color = "yellow" # изменение поля КЛАССА, которое уже не отразится на объекте
print(obj1.color) # выводится поле ОБЪЕКТА
# Скрипт выведет:
red
green
blue

В примере выше три раза выводится поле color объекта obj1 класса Colored. При этом пока не выполнена запись в это поле, выводится текущее значение поля класса, и в третий раз — значение поля объекта. Такое сохранение связи между полем объекта и класса до первой перезаписи может стать причиной неожиданного эффекта: если в программе меняется значение поля класса, то все объекты, одноимённые поля которых ещё не перезаписаны, окажутся неявно изменены.



  • Интуитивно трудно предсказуемое поведение параметров со значением-объектом по умолчанию. Если в качестве инициализатора для параметра по умолчанию указать конструктор объекта, это приведёт к созданию статического объекта, ссылка на который и будет передаваться по умолчанию в каждый вызов[163]. Это может повлечь трудно уловимые ошибки.

Download 1,16 Mb.

Do'stlaringiz bilan baham:
1   ...   18   19   20   21   22   23   24   25   ...   38




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish