При каких обстоятельствах одинаковые строки имеют одну и ту же ссылку? Горизонталью называется замкнутая кривая линия, все точки которой имеют одну и ту же высоту над поверхностью, принятой за начальную Имеют одну и ту же.


Рисунок 3.2 - Образование горизонталей

береговую линию в точках Б. Спроектировав ее на ту же плоскость Р, получим вторую замкнутую кривую линию ББ. Продол­жая подъем воды в такой же последовательности выше, на плоско­сти Р получим изображение возвышенности с помощью горизон­талей.

Для большей наглядности направление понижения скатов пока­зывается черточками, называемыми бергштрихами. Для указания высот горизонталей их отметки подписывают в разрывах горизон­талей, располагая верх цифр по направлению верха ската. Для большей выразительности рельефа, как правило, пятая, а иногда десятая горизонталь утолщаются.

Разность высот двух соседних горизонталей называется высо­той сечения рельефа.

Расстояние между двумя смежными горизонталями на плос­кости называется заложением.

Горизонтали обладают следующими свойствами:

  • а) все точ­ки, лежащие на одной и той же горизонтали, имеют одинаковую высоту;
  • б) все горизонтали должны быть непрерывными;
  • в) горизо­нтали не могут пересекаться или раздваиваться;
  • г) расстояния меж­ду горизонталями в плане характеризуют крутизну ската - чем меньше расстояние (заложение), тем круче скат;
  • д) кратчайшее расстояние между горизонталями соответствует направлению на­ибольшей крутизны ската;
  • е) водораздельные линии и оси лощин пересекаются горизонталями под прямыми углами;
  • ж) горизонтали, изображающие наклонную плоскость, имеют вид параллельных прямых.

Часто для уточнения форм рельефа применяют дополнительные горизонтали, которые изображаются штрихпунктирными линиями и называются полугоризонталями. Обычно полугоризонтали принято проводить в тех случаях, когда расстояние между горизон­талями на плане превышает 2 см. На рис. 3.1, б показано изображе­ние горизонталями отдельных элементов местности.

Задача по физике - 2379

2017-03-16
Два одинаковых шара имеют одну и ту же температуру. Один из шаров находится на горизонтальной плоскости, другой подвешен на нити. Обоим шарам передают одинаковое количество теплоты. Процесс нагревания идет так быстро, что не происходит потерь теплоты на нагревание соседних предметов и окружающей среды. Одинаковы или различны будут температуры шаров после нагревания? Ответ обоснуйте.


Решение:


рис.1

рис.2
Различие будет связано с поведением центров масс шаров.

Пусть прн нагревании шаров их объемы увеличиваются. В этом случае высота центра масс первого шара над горизонтальной плоскостью увеличится (рис. 1), а центр масс подвешенного шара опустится (рис. 2).

На основании первого закона термодинамики можно записать:

а) $Q = cm \Delta T_{1} + mgh, \Delta T_{1} = \frac{Q - mgh}{cm}$;
б) $Q = cm \Delta T_{2} - mgh, \Delta T_{2} = \frac{Q + mgh}{cm}$;

где $x$ - удельная теплоемкость вещества, из которого изготовлен шар, $m$ - его масса.

Отсюда следует, что $\Delta T_{2} > \Delta T_{1}$, т. е. висящий шар должен нагреться до более высокой температуры, чем шар, лежащий на горизонтальной поверхности. Оценим полученный эффект. Пусть радиус шара $R$, а коэффициент линейного расширения материала, из которого изготовлен шар, равен $\alpha$. Тогда отношение изменения температуры шара за счет изменения положения его центра масс к изменению температуры $\Delta T$ за счет сообщения ему количества теплоты $Q$ будет равно

$\frac{ \Delta T^{ \prime}}{ \Delta T} = \frac{mgh}{cm \Delta T} = \frac{mgR \alpha \Delta T}{cm \Delta T} = \frac{g}{c} R \alpha$.

Подсчитав оценочные значения, например, для железного шара радиуса $R = 0,1 м (c=450 Дж/(кг \cdot К), \alpha = 11,7 \cdot 10^{-6} К^{-1})$, получим: $\Delta T^{ \prime} / \Delta T = 2,6 \cdot 10^{-8}$.

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

Я искал веб-страницы и переполнял вопросы, но не смог найти ответ на этот вопрос. Наблюдение, которое я сделал, заключается в том, что в Python 2.7.3, если вы назначили две переменные одной и той же одиночной символьной строкой, например

>>> a = "a" >>> b = "a" >>> c = " " >>> d = " "

Затем переменные будут иметь одну и ту же ссылку:

>>> a is b True >>> c is d True

Это справедливо и для некоторых более длинных строк:

>>> a = "abc" >>> b = "abc" >>> a is b True >>> " " is " " True >>> " " * 1 is " " * 1 True

>>> a = "ac" >>> b = "ac" >>> a is b False >>> c = " " >>> d = " " >>> c is d False >>> " " * 2 is " " * 2 False

Может кто-нибудь объяснить причину этого?

Я подозреваю, что могут быть упрощения / замены, сделанные интерпретатором и / или некоторым механизмом кэширования, который использует тот факт, что строки неизменяемы для оптимизации в некоторых особых случаях, но что я знаю? Я попытался сделать глубокие копии строк, используя конструктор str и функцию copy.deepcopy, но строки по-прежнему несовместимы с ссылками.

Причина, по которой у меня возникают проблемы, заключается в том, что я проверяю неравенство ссылок на строки в некоторых модульных тестах, которые я пишу для методов клонирования классов python нового стиля.

3 Solutions collect form web for “При каких обстоятельствах одинаковые строки имеют одну и ту же ссылку?”

Детали того, когда строки кэшируются и используются повторно, зависят от реализации, могут меняться от версии Python до версии Python и на нее нельзя положиться. Если вы хотите проверить строки для равенства, используйте == , а не.

В CPython (наиболее часто используемая реализация Python) строковые литералы, которые встречаются в исходном коде, всегда интернированы, поэтому, если один и тот же строковый литерал встречается дважды в исходном коде, они в конечном итоге указывают на один и тот же строковый объект. В Python 2.x вы также можете вызвать встроенную функцию intern() чтобы заставить интернатуру определенной строки, но вы на самом деле этого не должны делать.

Измените фактическую цель проверки того, неправильно ли распределены атрибуты между экземплярами: этот вид проверки полезен только для изменяемых объектов. Для атрибутов неизменяемого типа семантическая разность между общими и неразделенными объектами отсутствует. Вы можете исключить неизменяемые типы из своих тестов, используя

Immutable = basestring, tuple, numbers.Number, frozenset # ... if not isinstance(x, Immutable): # Exclude types known to be immutable

Обратите внимание, что это также исключает кортежи, содержащие изменяемые объекты. Если вы хотите протестировать их, вам нужно будет рекурсивно спуститься в кортежи.

В CPython в качестве детали реализации пустая строка является общей, как и односимвольные строки, код которых находится в диапазоне Latin-1. Вы не должны зависеть от этого, так как это возможно обойти эту функцию.

Вы можете запросить строку для интернирования с использованием sys.intern ; это произойдет автоматически в некоторых случаях:

Обычно имена, используемые в программах Python, автоматически интернированы, а словари, используемые для хранения атрибутов модуля, класса или экземпляра, имеют интернированные ключи.

sys.intern выставляется так, что вы можете использовать его (после профилирования!) для производительности:

Внутренние строки полезны для получения небольшой производительности при поиске в словарях – если ключи в словаре интернированы, а ключ поиска интернирован, сопоставление ключей (после хэширования) может быть выполнено с помощью сравнения указателей вместо сравнения строк.

Обратите внимание, что intern является встроенным в Python 2.

Я думаю, что это реализация и оптимизация. Если строка короткая, они могут (и часто?) «Разделяться», но вы не можете зависеть от этого. Как только у вас будет больше строк, вы увидите, что они не совпадают.

In : s1 = "abc" In : s2 = "abc" In : s1 is s2 Out: True

более длинные строки

In : s1 = "abc this is much longer" In : s2 = "abc this is much longer" In : s1 is s2 Out: False

используйте == для сравнения строк (а не оператора is).

Наблюдение / гипотеза OP (в комментариях ниже) о том, что это может быть связано с количеством токенов, похоже, подтверждается следующим:

In : s1 = "abc" In : s2 = "abc" In : s1 is s2 Out: False

если сравнивать с исходным примером abc выше.



Похожие публикации