Те имат същия. При какви обстоятелства идентичните редове имат една и съща препратка? Решенията събират уеб формуляр за „При какви обстоятелства едни и същи редове имат една и съща препратка?“

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

2017-03-16
Две еднакви топки имат еднаква температура. Едната от топките е в хоризонтална равнина, другата е окачена на конец. Еднакво количество топлина се предава на двете топки. Процесът на отопление протича толкова бързо, че няма загуба на топлина поради нагряване на съседни обекти и околната среда. Ще бъдат ли температурите на топките еднакви или различни след нагряване? Обосновете отговора си.


Решение:


Фиг. 1

Фиг.2
Разликата ще бъде свързана с поведението на центровете на масата на топките.

Със загряването на топчетата нека се увеличат обемите им. В този случай височината на центъра на масата на първата топка над хоризонталната равнина ще се увеличи (фиг. 1), а центърът на масата на окачената топка ще се понижи (фиг. 2).

Въз основа на първия закон на термодинамиката можем да напишем:

a) $Q = cm \Delta T_(1) + mgh, \Delta T_(1) = \frac(Q - mgh)(cm)$;
b) $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 m (c = 450 J/(kg \cdot K), \alpha = 11,7 \cdot 10^(-6) K^(-1 ) )$, получаваме: $\Delta T^( \prime) / \Delta T = 2,6 \cdot 10^(-8)$.

По този начин ефектът, обсъждан в проблема, е незначителен и е извън възможността за експериментално откриване.

Търсих в мрежата и претърсих въпроси, но не можах да намеря отговора на този въпрос. Едно наблюдение, което направих, е, че в Python 2.7.3, ако сте присвоили две променливи на един и същи низ от символи, напр.

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

След това променливите ще имат една и съща препратка:

>>> a е b True >>> c е d True

Това важи и за някои по-дълги низове:

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

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

Може ли някой да обясни причината за това?

Подозирам, че може да има опростявания/замени, направени от интерпретатора и/или някакъв механизъм за кеширане, който се възползва от факта, че низовете са неизменни за оптимизиране в някои специални случаи, но какво знам? Опитах се да направя дълбоки копия на низове, използвайки конструктора str и функцията copy.deepcopy, но низовете все още са несъвместими с препратките.

Причината, поради която имам проблеми, е, че тествам за неравенство на референтни низове в някои модулни тестове, които пиша за методи за клониране на нов стил на Python.

3 Решения събира формуляр уеб за „При какви обстоятелства едни и същи редове имат една и съща препратка?“

Подробностите за това кога низовете се кешират и използват повторно зависят от изпълнението, могат да варират от версия на Python до версия на Python и не трябва да се разчита на тях. Ако искате да тествате низове за равенство, използвайте == вместо .

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

промянадействителната цел да се провери дали атрибутите са разпределени неправилно между екземплярите: този вид проверка е полезна само за променливи обекти. За атрибути от неизменен тип няма семантична разлика между споделени и несподелени обекти. Можете да изключите неизменните типове от вашите тестове, като използвате

Immutable = basestring, tuple, numbers.Number, frozenset # ... if not isinstance(x, Immutable): # Изключване на типове, за които е известно, че са неизменни

Имайте предвид, че това също изключва кортежи, съдържащи променливи обекти. Ако искате да ги тествате, ще трябва да се спуснете рекурсивно в кортежите.

В CPython, като детайл на изпълнението, празният низ е често срещан, както и низовете от един знак, чийто код е в диапазона Latin-1. Вие Нетрябва да зависи от това, тъй като е възможно да се заобиколи тази функция.

Можете да поискате низ за интерниранеизползване на sys.intern; това ще се случи автоматично в някои случаи:

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

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

Вътрешните низове са полезни за постигане на малко производителност при търсене на речници - ако ключовете в речника са интернирани и ключът за справка е интерниран, съпоставянето на ключове (след хеширане) може да се извърши чрез сравнения на указатели вместо сравнения на низове.

Имайте предвид, че intern е вграден Python 2.

Мисля, че е внедряване и оптимизация. Ако низът е къс, те могат (и често?) да се "разцепят", но не можете да разчитате на това. След като имате повече редове, ще видите, че не съвпадат.

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

по-дълги линии

In : s1 = "abc това е много по-дълго" In : s2 = "abc това е много по-дълго" In : s1 е s2 Out: False

използвайте == за сравняване на низове (и Нее оператор).

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

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

в сравнение с оригиналния abc пример по-горе.


Фигура 3.2 - Образуване на контури

брегова линия в точки B. Като я проектираме върху същата равнина P, получаваме втора затворена крива линия BB. Продължавайки издигането на водата в същата последователност по-високо, в равнина P получаваме изображение на хълма с помощта на хоризонтални линии.

За по-голяма яснота посоката на наклона на склоновете е показана с тирета, т.нар берг инсулти.За да се укажат височините на хоризонталните линии, техните марки се подписват в прекъсванията на хоризонталните линии, като горната част на числата се поставя в посока на върха на ската. За да се направи релефът по-изразителен, като правило петата, а понякога и десетата хоризонтална линия се удебеляват.

Разликата във височините на две съседни хоризонтални линии се нарича височина на релефното сечение.

Разстоянието между две съседни хоризонтални линии в една равнина се нарича lay.

Хоризонталите имат следните свойства:

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

Често за изясняване на релефните форми се използват допълнителни хоризонтални линии, които се изобразяват с пунктирани линии и се наричат ​​полухоризонтали. Обикновено полухоризонталите обикновено се чертаят в случаите, когато разстоянието между хоризонталните линии на плана надвишава 2 см. На фиг. 3.1, b показва хоризонталното изображение на отделни елементи на терена.

КАТЕГОРИИ

ПОПУЛЯРНИ СТАТИИ

2023 “kingad.ru” - ултразвуково изследване на човешки органи