Форум сайта python.su
Yuri197
На бытовом уровне я знаю. Я не знаю, что это значит по отношению к питону. Могу предположить, что вы имели в виду операцию сложения двух переменных, но в этом случае, вам бы тоже следовало бы сначала подумать ибо в питоне разрешена операция суммирования для любых типов.
Офлайн
Yuri не надо обижаться. Термин добавить в самом деле используется с контейнерами, но наверное вы не это имеете ввиду.
Вот как присвоить объекты разного типа:
a=2 a="2"
a=[] a.append(2) a.append("2")
Yuri197По сути вы задали вопрос, но не очень ясно что именно у вас не получается.
Я вот даже не представляю, как это можно сделать.
Офлайн
doza_andЯ не обижаюсь, я просто точно знаю, что будет в результате. А тратить 2-3 часа на совершенно мне не нужный спор и портить себе настроение не хочу.
Yuri не надо обижаться.
doza_andКак известно, каждый тип занимает определенное количество байт в памяти. Строго типизированный язык от слабо типизированного отличается наличием комплекса мер, который не позволяет передавать в память одного типа значение другого типа. А Python типы строго контролирует. То есть Python - язык строго типизированный (о чем, кстати, в той-же википедии открытым текстом написано). Я не вопрос задавал, я имел в виду, что мне неизвестен способ обмануть интерпретатор. Например:
По сути вы задали вопрос, но не очень ясно что именно у вас не получается.
ts1 = "строка"
print(type(ts1))
ts2 = 10
print(type(ts2))
ts3 = 1.5
print(type(ts3))
# Сложить строку с int не выйдет.
# ts4 = ts1 + ts2
# Сложить строку с float не выйдет.
# ts4 = ts1 + ts3
ts4 = ts2 + ts3
print(type(ts4))
ts4 = "Новая строка"
print(type(ts4))
Офлайн
Yuri197А! Ну вот теперь то все понятно! Я вас сразу не узнал в гриме, Капитан Очевидность, вы извините. Тип, сответсвует значению, это железно.
тип все равно будет соответствующий значению
Yuri197
я просто точно знаю, что будет в результате.
class Foo: def __add__(self, other): return random.choice([int, float, bool])()
Отредактировано FishHook (Май 17, 2019 21:51:05)
Офлайн
FishHookОбъяснялось не вам, а автору темы. Но не поняли почему-то вы.
Я вас сразу не узнал в гриме, Капитан Очевидность, вы извините.
FishHookНи о чем. Когда я говорил, что точно знаю, я имел в виду результат спора с вами. А не случайный результат переопределения встроенного метода, который поведение интерпретатора ни разу не отменяет.
точно знаете????
Офлайн
Yuri197
ну ваш же пример и ломает ваше же высказывание
>>> ts2 = 10 >>> ts3 = 1.5 >>> t4 = ts2 + ts3 >>> print(t4) 11.5 >>> print(list(map(type, (ts2, ts3, t4)))) [<class 'int'>, <class 'float'>, <class 'float'>]
Офлайн
Вы считаете себя программистом, не зная ассемблера и Си
Офлайн
JOHN_16Согласен, лишнее. Все объект. Но хотелось объяснить попроще то, что я имел в виду. Да и смысл то все равно, в конечном итоге в безопасном обмене данными в памяти.
И про память тут высказывания лишние.
JOHN_16Значения int и float складываются разумеется. Точнее, int будет приведен самим интепретатором к float, потом будут сложены два значения float. Результат будет float. Нет никакого противоречия. Интерпретатор следит за типами.
два разных типа, а сложить удалось.
Офлайн
DezmontDeXaвы удивитесь но есть геймдевы котороые пилят игры даже не зная ни одного ЯП.
Я уверен, что уже сейчас найдется геймдев, который пилит хорошие игры, без знаний ассемблера.
DezmontDeXaДа не обязательно знать как работает Unity/Unreal, что бы делать на них игры, но если вы занете, то сможете лучше/быстрее/эффективнее использовать их возможности. А то я смотрю что геймдев сейчас скатится ниже плинтуса, и какаянить современная реинкарнация арканоида, котороый ранее шел на 486-м с 4 Мб оперативы сейчас хочет коре i3 и 8Гб РАМы, иначе ни-ни.
Не обязательно знать как работает Unity/Unreal, что бы делать на них игры. Тем более не важно знать ассемблер или Си для разработки игр.
DezmontDeXaАга использовать нормальную ИДЕ вместо поделия от МС. Их и под венду более чем достаточно, PyScripter, PyCharm, PyDev, Spider, NetBeans… это те что сходу пришли в голову, если погуглить то можно найти еще с десяток. Попробуйте пару- ройку и найдите наиболее подходящий именно вам.
Или все-таки есть какой-то нормальный способ кодить методом набора кода, а не методом копипаста из браузера?
[code python][/code]
Офлайн
Yuri197Ну а как он следит? По общему правилу, за это отвечает метод __add__
Значения int и float складываются разумеется. Точнее, int будет приведен самим интепретатором к float, потом будут сложены два значения float. Результат будет float. Нет никакого противоречия. Интерпретатор следит за типами.
help(int.__add__) Help on wrapper_descriptor: __add__(self, value, /) Return self+value.
Офлайн