04. Переменные: тип, имя, значение — Информатика и ИКТ
4. Переменные: тип, имя, значение. В объектно-ориентированном языке программирования Visual Basic переменные используются для хранения и обработки данных в программах. Переменные задаются именами, которые определяют области оперативной памяти компьютера, в которых хранятся значения переменных. Значениями переменных могут быть данные различных типов (целые или вещественные числа, последовательности символов, логические значения и т. д.). Переменная в программе представлена именем и служит для обращения к данным определенного типа, конкретные значения которых хранятся в ячейках оперативной памяти. Тип переменной. Тип переменных определяется диапазоном значений, которые могут принимать переменные, и допустимыми операциями над этими значениями. Значениями переменных числовых типов Byte, Различные типы данных требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов) (табл. 2.2). Таблица 2.2. Некоторые типы переменных в языке Visual Basic 2010
Имя переменной. Имена переменных определяют области оперативной памяти компьютера, в которых хранятся значения переменных. Имя каждой переменной (идентификатор) уникально и не может меняться в процессе выполнения программы. Имя переменной может состоять из различных символов (латинские и русские буквы, цифры и т. д.), но должно обязательно начинаться с буквы и не должно включать знак точка «.». Количество символов в имени не может быть более 1023, однако для удобства обычно ограничиваются несколькими символами. Объявление переменных. Необходимо объявлять переменные, для того чтобы исполнитель программы (компьютер) «понимал», переменные какого типа используются в программе. Для объявления переменной используется оператор Dim. С помощью одного оператора можно объявить сразу несколько переменных, например: Dim A As Byte, В As Short, С As Single, D As String, G As Boolean Присваивание переменным значений. Переменная может получить или изменить значение с помощью оператора присваивания. При выполнении оператора присваивания переменная, имя которой указано слева от знака равенства, получает значение, которое находится справа от знака равенства. Например: А = 255 В = -32768 С = 3.14 D = «информатика» G = True Значение переменной может быть задано числом, строкой или логическим значением, а также может быть представлено с помощью арифметического, строкового или логического выражения. Проект «Переменные». Создать проект, в котором объявить переменные различных типов, присвоить им значения и вывести значения в поле списка, размещенное на форме. Создадим графический интерфейс (рис. 2.8). 1. Поместить на форму: • поле списка ListBox1 для вывода значений переменных; • кнопку Button1 для запуска событийной процедуры. Создадим событийную процедуру, реализующую присваивание значений переменным различных типов. Вывод значений переменных в поле списка произведем с использованием метода Items.Add(), аргументами которого будут переменные. 2. Dim A As Byte, В As Short, С As Single, D As String, G As Boolean Private Sub Button1_Click (…) A = 255 В = -32768 С = 3.14 D = «информатика» G = True ListBox1.Items.Add(A) ListBox1.Items.Add(B) ListBox1.Items.Add(C)ListBox1.Items.Add(D) ListBox1.Items.Add(G) End Sub
3. Запустить проект на выполнение. После щелчка по кнопке начнет выполняться событийная процедура, в которой будут выполнены операции присваивания (в отведенные переменным области оперативной памяти будут записаны их значения). Затем с помощью метода Items.Add () будет произведен вывод значений переменных в поле списка. В этом процессе значения переменных считываются из оперативной памяти и печатаются в столбик в поле списка (см. рис. 2.8). Рис. 2.8. Проект «Переменные» Проанализируем процесс выполнения программы компьютером. После запуска проекта оператор объявления переменных Dim отведет в оперативной памяти для их хранения необходимое количество ячеек (табл. 2.3): • для целой неотрицательной переменной А — одну ячейку; • для целочисленной переменной В — две ячейки; • для переменной одинарной точности С — четыре ячейки; • для строковой переменной D — по две ячейки на символ; • для логической переменной G — две ячейки. Таблица 2.3. Значения переменных в оперативной памяти
Таким образом, в памяти для хранения значений переменных будет отведена 31 ячейка, например, ячейки с 1-й по 31-ю. |
(курс 68 ч.) Переменная: тип, имя, значение
Планирование уроков на учебный год (по учебнику Н.Д. Угриновича)
Главная | Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 9 классы | Планирование уроков на учебный год (по учебнику Н.Д. Угриновича) | Переменная: тип, имя, значение
Содержание урока
1.3. Переменные: тип, имя, значение
Лабораторная работа № 4
1.3. Переменные: тип, имя, значение
В языках Visual Basic и Gambas и в языке OpenOffice.org Basic переменные используются для хранения и обработки данных в программах.
Переменная задается именем, определяющим область оперативной памяти компьютера, в которых хранится значение переменной. Значениями переменных могут быть данные различных типов (целые или вещественные числа, последовательности символов, логические значения и т. д.).Переменная в программе представлена именем и служит для обращения к данным определенного типа, конкретное значение которых хранится в ячейке оперативной памяти.
Тип переменной. Тип переменной определяется типом данных, которые могут быть значениями переменной. Значениями переменных числовых типов Byte, Short, Integer, Long, Single, Double являются числа, логического типа Boolean — значения «истина» (True) или «ложь» (False), строкового типа String
Данные различных типов требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов) (табл. 1.3).
Таблица 1.3. Типы переменных
Имя переменной. Имя переменной определяет область оперативной памяти компьютера, в которых хранится значение переменных. Имя каждой переменной (идентификатор) уникально и не может меняться в процессе выполнения программы. В рассматриваемых языках имя переменной может состоять из различных символов (латинские и русские буквы, цифры и т. д.), но должно обязательно начинаться с буквы и не должно включать знак точка «.». Количество символов в имени не может быть более 1023, однако для удобства обычно ограничиваются несколькими символами.
Объявление переменных. Необходимо объявлять переменные, для того чтобы исполнитель программы (компьютер) «понимал», переменные какого типа используются в программе.
Для объявления переменной используется оператор объявления переменных Dim. С помощью одного оператора можно объявить сразу несколько переменных, например:
Dim A As Byte, В As Short, С As Single, D As String, E As Boolean
Присваивание переменным значений. Задать или изменить значение переменной можно с помощью оператора присваивания. При выполнении оператора присваивания переменная, имя которой указано слева от знака равенства, получает значение, которое находится справа от знака равенства. Например:
А = 255
В = -32768
С = 3.14
D = «информатика»
Е = True
Значение переменной может быть задано числом, строкой или логическим значением, а также может быть представлено с помощью арифметического, строкового или логического выражения.
Проанализируем процесс выполнения программы компьютером (для определенности записанной на языке Visual Basic). После запуска проекта оператор объявления переменных Dim отведет в оперативной памяти для их хранения необходимое количество ячеек (табл. 1.4):
• для целой неотрицательной переменной А одну ячейку;
• для целочисленной переменной В две ячейки;
• для переменной одинарной точности С четыре ячейки;
• для строковой переменной D по две ячейки на символ;
• для логической переменной Е две ячейки.
Таблица 1.4. Значения переменных в оперативной памяти
Таким образом, в памяти для хранения значений переменных будет отведена 31 ячейка, например ячейки с 1-й по 31-ю.
Контрольные вопросы
1. В чем состоит разница между типом, именем и значением переменной?
2. Какие основные типы переменных используются в языке программирования Visual Basic? Gambas? OpenOffice.org Basic?
3. Почему рекомендуется объявлять переменные перед их использованием в программе?
Задания для самостоятельного выполнения
1.5. Задание с кратким ответом. Назовите количество ячеек оперативной памяти, необходимое для хранения значений переменных первых семи типов языка OpenOffice.org Basic, перечисленных в табл. 1.3.
Cкачать материалы урока
Variables in Python — Real Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Переменные в Python
В предыдущем учебном пособии по основным типам данных в Python вы увидели, как могут быть созданы значения различных типов данных Python. Но до сих пор все показанные значения были буквальными или постоянными значениями:
>>>
>>> print(5.3) 5.3
Если вы пишете более сложный код, вашей программе потребуются данные, которые могут изменяться по ходу выполнения программы.
Вот чему вы научитесь в этом руководстве: Вы узнаете, как каждый элемент данных в программе Python может быть описан абстрактным термином объект , и вы узнаете, как манипулировать объектами, используя символические имена, называемые переменных .
Примите участие в викторине: Проверьте свои знания с помощью нашей интерактивной викторины «Переменные Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройди тест »
Присвоение переменной
Думайте о переменной как об имени, прикрепленном к определенному объекту. В Python переменные не нужно объявлять или определять заранее, как это имеет место во многих других языках программирования. Чтобы создать переменную, вы просто присваиваете ей значение, а затем начинаете ее использовать. Присваивание выполняется с помощью одного знака равенства ( =
):
>>>
>>> n = 300
Читается или интерпретируется как « n
присваивается значение 300
». Как только это будет сделано, n
можно использовать в операторе или выражении, и его значение будет заменено:
>>>
>>> print(n) 300
Точно так же, как буквальное значение может отображаться непосредственно из приглашения интерпретатора в сеансе REPL без необходимости print()
, переменная:
>>>
>>> нет 300
Позже, если вы измените значение n
и используйте его снова, вместо него будет подставлено новое значение:
>>>
>>> n = 1000 >>> напечатать(н) 1000 >>> н 1000
Python также допускает цепное присваивание, что позволяет одновременно присваивать одно и то же значение нескольким переменным:
>>>
>>> а = б = с = 300 >>> напечатать (а, б, в) 300 300 300
Приведенное выше связанное присвоение присваивает 300
переменным a
, b
и c
одновременно.
Удалить рекламу
Типы переменных в Python
Во многих языках программирования переменные имеют статический тип. Это означает, что переменная изначально объявлена как имеющая определенный тип данных, и любое значение, присвоенное ей в течение ее жизни, всегда должно иметь этот тип.
Переменные в Python не подпадают под это ограничение. В Python переменной может быть присвоено значение одного типа, а затем переназначено значение другого типа:
>>>
>>> переменная = 23,5 >>> печать (вар) 23,5 >>> var = "Теперь я строка" >>> печать (вар) Теперь я строка
Ссылки на объекты
Что на самом деле происходит, когда вы выполняете присваивание переменной? Это важный вопрос в Python, потому что ответ несколько отличается от того, что вы найдете во многих других языках программирования.
Python — это высоко объектно-ориентированный язык. На самом деле практически каждый элемент данных в программе Python является объектом определенного типа или класса. (Этот пункт будет повторяться много раз в ходе этих руководств.)
Рассмотрим этот код:
>>>
>>> печать(300) 300
При представлении оператора print(300)
интерпретатор делает следующее:
- Создает целочисленный объект
- Присваивает ему значение
300
- Выводит на консоль
Вы можете видеть, что целочисленный объект создается с помощью встроенной функции type()
:
>>>
>>> тип(300) <класс 'целое число'>
Переменная Python — это символическое имя, которое является ссылкой или указателем на объект. Как только объект присваивается переменной, вы можете обращаться к объекту по этому имени. Но сами данные по-прежнему содержатся внутри объекта.
Например:
>>>
>>> n = 300
Это присваивание создает целочисленный объект со значением 300
и присваивает переменной n
, чтобы указать на этот объект.
Следующий код проверяет, что n
указывает на целочисленный объект:
>>>
>>> print(n) 300 >>> тип(н) <класс 'целое число'>
Теперь рассмотрим следующее утверждение:
>>>
>>> м = н
Что происходит при его выполнении? Python не создает другой объект. Он просто создает новое символическое имя или ссылку, m
, что указывает на тот же объект, на который указывает n
.
Далее, предположим, что вы делаете следующее:
>>>
>>> м = 400
Теперь Python создает новый целочисленный объект со значением 400
, и m
становится ссылкой на него.
Наконец, предположим, что этот оператор выполняется следующим образом:
>>>
>>> п = "фу"
Теперь Python создает строковый объект со значением "foo"
и делает n
ссылкой на него.
Больше нет ссылок на целочисленный объект 300
. Он потерян, и нет никакого способа получить к нему доступ.
Учебники в этой серии иногда ссылаются на время жизни объекта. Жизнь объекта начинается с момента его создания, когда создается хотя бы одна ссылка на него. В течение жизни объекта могут быть созданы дополнительные ссылки на него, как вы видели выше, а также ссылки на него могут быть удалены. Объект как бы остается живым до тех пор, пока на него существует хотя бы одна ссылка.
Когда количество ссылок на объект падает до нуля, он больше не доступен. В этот момент его жизнь закончилась. Python в конечном итоге заметит, что он недоступен, и вернет выделенную память, чтобы ее можно было использовать для чего-то другого. На компьютерном жаргоне этот процесс называется сборкой мусора.
Удалить рекламу
Идентификатор объекта
В Python каждому создаваемому объекту присваивается номер, который его однозначно идентифицирует. Гарантируется, что никакие два объекта не будут иметь одинаковый идентификатор в любой период времени, в течение которого их время жизни перекрывается. Как только счетчик ссылок на объект падает до нуля и он удаляется сборщиком мусора, как это произошло с 300
выше, тогда его идентификационный номер становится доступным и может использоваться снова.
Встроенная функция Python id()
возвращает целочисленный идентификатор объекта. Используя функцию id()
, вы можете убедиться, что две переменные действительно указывают на один и тот же объект:
>>>
>>> n = 300 >>> м = п >>> идентификатор(n) 60127840 >>> идентификатор (м) 60127840 >>> м = 400 >>> идентификатор (м) 60127872
После присвоения m = n
, m
и n
оба указывают на один и тот же объект, что подтверждается тем фактом, что id(m)
и id(n)
возвращают одно и то же число. Когда м
переназначаются на 400
, м
и n
указывают на разные объекты с разными идентификаторами.
Глубокое погружение: кэширование малых целых значений
Из того, что вы теперь знаете о назначении переменных и ссылках на объекты в Python, следующее, вероятно, вас не удивит:
>>>
>>> м = 300 >>> n = 300 >>> идентификатор (м) 60062304 >>> идентификатор(n) 60062896С оператором
m = 300
Python создает целочисленный объект со значением300
и устанавливаетm
в качестве ссылки на него. Затемn
аналогичным образом присваивается целочисленному объекту со значением300
, но не тому же самому объекту. Таким образом, они имеют разные идентификаторы, что можно проверить по значениям, возвращаемымидентификатор ()
.Но подумайте вот о чем:
>>>
>>> м = 30 >>> n = 30 >>> идентификатор (м) 1405569120 >>> идентификатор(n) 1405569120Здесь
m
иn
отдельно присваиваются целочисленным объектам, имеющим значение30
. Но в данном случаеid(m)
иid(n)
идентичны!В целях оптимизации интерпретатор создает объекты для целых чисел в диапазоне
[-5, 256]
при запуске, а затем повторно использует их во время выполнения программы. Таким образом, когда вы присваиваете отдельным переменным целочисленное значение в этом диапазоне, они фактически будут ссылаться на один и тот же объект.
Имена переменных
В примерах, которые вы видели до сих пор, использовались короткие имена переменных, такие как m
и n
. Но имена переменных могут быть более подробными. На самом деле, обычно полезно, если они есть, потому что это делает назначение переменной более очевидным с первого взгляда.
Официально имена переменных в Python могут быть любой длины и состоять из прописных и строчных букв ( A-Z
, a-z
), цифр ( 0-9
) и символа подчеркивания ( _
). Дополнительным ограничением является то, что хотя имя переменной может содержать цифры, первый символ имени переменной не может быть цифрой.
Примечание: Одним из дополнений к Python 3 была полная поддержка Unicode, которая также позволяет использовать символы Unicode в имени переменной. Вы узнаете о Unicode более подробно в следующем руководстве.
Например, все следующие имена являются допустимыми именами переменных:
>>>
>>> имя = "Боб" >>> Возраст = 54 года >>> has_W2 = Истина >>> print(имя, возраст, has_W2) Боб 54 Правда
Но это не так, потому что имя переменной не может начинаться с цифры:
>>>
>>> 1099_filed = Ложь SyntaxError: недопустимый токен
Обратите внимание на регистр. Строчные и прописные буквы не совпадают. Использование символа подчеркивания также важно. Каждое из следующего определяет другую переменную:
>>>
>>> возраст = 1 >>> Возраст = 2 >>> возраст = 3 >>> ВОЗРАСТ = 4 >>> a_g_e = 5 >>> _возраст = 6 >>> возраст_ = 7 >>> _ВОЗРАСТ_ = 8 >>> print(age, Age, aGe, AGE, a_g_e, _age, age_, _AGE_) 1 2 3 4 5 6 7 8
Ничто не мешает вам создать две разные переменные в одной и той же программе с именами age
и Age
или age
. Но это, наверное, неразумно. Это, безусловно, может сбить с толку любого, кто попытается прочитать ваш код, и даже вас самого, после того как вы какое-то время отлучитесь от него.
Стоит дать переменной имя, достаточно описательное, чтобы было ясно, для чего она используется. Например, предположим, что вы подсчитываете количество людей, окончивших колледж. Возможно, вы могли бы выбрать любое из следующего:
>>>
>>> количество выпускников колледжей = 2500 >>> КОЛИЧЕСТВО ВЫПУСКНИКОВ КОЛЛЕДЖА = 2500 >>> количество выпускников колледжа = 2500 >>> Количество выпускников колледжа = 2500 >>> количество_выпускников_колледжа = 2500 >>> print(количествовыпускников,ЧИСЛОВЫПУСКНИКОВ, ... количество выпускников колледжа, количество выпускников колледжа, ... количество_выпускников_колледжа) 2500 2500 2500 2500 2500
Все они, вероятно, являются лучшим выбором, чем n
, или ncg
, или подобные. По крайней мере, вы можете сказать по имени, что должно представлять значение переменной.
С другой стороны, не все они одинаково разборчивы. Как и во многих других случаях, это вопрос личных предпочтений, но большинству людей первые два примера, где все буквы сдвинуты вместе, труднее читать, особенно тот, который написан только заглавными буквами. Наиболее часто используемые методы построения имени переменной из нескольких слов — это последние три примера:
- Camel Регистр: Второе и последующие слова пишутся с заглавной буквы, чтобы границы слов было легче увидеть. (Наверное, в какой-то момент кого-то осенило, что заглавные буквы, разбросанные по имени переменной, отдаленно напоминают верблюжьи горбы.)
- Пример:
numberOfCollegeGraduates
- Пример:
- Паскаль Регистр: Идентичен верблюжьему регистру, за исключением того, что первое слово также пишется с заглавной буквы.
- Пример:
NumberOfCollegeGraduates
- Пример:
- Змея Регистр: Слова разделяются символом подчеркивания.
- Пример:
количество_выпускников_колледжа
- Пример:
Программисты жарко, с удивительным пылом спорят о том, какой из них предпочтительнее. Достойные аргументы можно привести для всех из них. Используйте тот из трех, который наиболее визуально привлекателен для вас. Выберите один и используйте его постоянно.
Позже вы увидите, что имена могут быть даны не только переменным. Вы также можете называть функции, классы, модули и так далее. Правила, применимые к именам переменных, также применимы к идентификаторам — более общему термину для имен, данных объектам программы.
Руководство по стилю для кода Python, также известное как PEP 8 , содержит соглашения об именах, в которых перечислены предлагаемые стандарты для имен различных типов объектов. PEP 8 включает следующие рекомендации:
- Snake Case следует использовать для имен функций и переменных.
- Pascal Case следует использовать для имен классов. (PEP 8 называет это соглашением CapWords.)
Удалить рекламу
Зарезервированные слова (ключевые слова)
Есть еще одно ограничение на имена идентификаторов. В языке Python зарезервирован небольшой набор ключевых слов, обозначающих специальные функциональные возможности языка. Ни один объект не может иметь то же имя, что и зарезервированное слово.
В Python 3.6 зарезервировано 33 ключевых слова:
Python Ключевые слова | |||
---|---|---|---|
Ложь | по умолчанию | если | поднять |
Нет | или | импорт | возврат |
Правда | Элиф | в | попробовать |
и | еще | это | и |
как | кроме | лямбда | с |
утверждение | наконец | неместный | выход |
перерыв | для | не | |
класс | из | или | |
продолжить | глобальный | пропуск |
Вы можете просмотреть этот список в любое время, набрав help("keywords")
в интерпретаторе Python. Зарезервированные слова чувствительны к регистру и должны использоваться точно так, как показано. Все они полностью строчные, за исключением False
, None
и True
.
Попытка создать переменную с тем же именем, что и любое зарезервированное слово, приводит к ошибке:
>>>
>>> для = 3 SyntaxError: неверный синтаксис
Заключение
В этом руководстве рассматриваются основы переменных Python , включая ссылки на объекты и идентификаторы, а также присвоение имен идентификаторам Python.
Теперь вы хорошо понимаете некоторые типы данных Python и знаете, как создавать переменные, которые ссылаются на объекты этих типов.
Далее вы увидите, как объединять объекты данных в выражения с участием различных операций .
Пройди тест: Проверьте свои знания с помощью нашей интерактивной викторины «Переменные Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройдите тест »
Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Variables in Python
Переменная PowerShell — имя, значение, тип данных — 4sysops
Переменная PowerShell имеет множество функций, помогающих создавать надежные сценарии. Понимание наиболее важных концепций переменной PowerShell необходимо для всего, что вы делаете в PowerShell. В первом посте этой серии я объясню, как давать имена переменным, как присваивать значения и как работать с типами данных PowerShell.
Содержание
- Наименование
- Значения
- Тип данных
- Автор
- Последние сообщения
Майкл Пьетрофорте
Майкл Пьетрофорте является основателем и главным редактором 4sysops. Он имеет более чем 35-летний опыт управления ИТ и системного администрирования.
Последние сообщения от Michael Pietroforte (посмотреть все)
Целью переменных в любом языке программирования является хранение элементов данных, чтобы вы могли повторно использовать их позже в своем коде. Если вы знаете переменные только из пакетных сценариев, вы будете удивлены тем, сколько еще вещей вы можете сделать с помощью переменной PowerShell.
Именование
Давайте сначала рассмотрим основы. Важным свойством переменной PowerShell является ее имя, которому всегда предшествует знак доллара «$» и которое может содержать только буквы, цифры и знак подчеркивания. Если вы чувствуете сильное желание использовать другие символы, вы должны заключить имя в фигурные скобки. Вы не должны использовать имена переменных, которые были предварительно определены (подробнее об этом позже).
Вот примеры допустимых имен переменных:
$myVariable, $MyVariable_1, ${my-variable}
И это недопустимые имена:
myVariable, $my-variable, $my variable
Строго говоря, имя переменной — это часть после знака доллара. Это важно знать, потому что, когда вам нужно указать имя переменной в качестве параметра в командлете, вы должны ввести его без знака доллара. Знак доллара говорит оболочке прочитать значение переменной.
Как и большинство ключевых слов в PowerShell, переменные нечувствительны к регистру. Таким образом, PowerShell не различает $myVariable и $Myvariable.
Значения
Вы можете присваивать значения переменной PowerShell, комбинируя имя переменной, оператор присваивания и выражение. Вот простой пример:
$a = 1 + 1
Знак «=» является одним из восьми операторов присваивания. Выражение — это все, для чего PowerShell может определить значение. Если вы вводите выражение в командной строке PowerShell, PowerShell возвращает его значение. «Hello world» и 1 — тоже выражения; для определения их значений просто не нужно так много вычислений.
Если вы хотите заполнить несколько переменных одним и тем же значением, вы можете сохранить ввод, как в примере ниже:
$a = $b = $c = 1
Вы также можете определить несколько переменных с разными значениями в одном строка:
$a, $b, $c = 1, 2, 3
Это уменьшает количество строк в сценарии, но также затрудняет его чтение.
Существуют и другие способы сохранения значения в переменной. Мы увидим примеры позже.
Для отображения значения переменной не нужна специальная команда, как во многих других языках программирования; достаточно ввести имя переменной. Это работает в сценарии и в командной строке.
$c
Благодаря интерполяции переменных вы также можете расширить переменную в строке, если строка заключена в двойные кавычки.
"Это значения переменных: $a, $b, $c."
Если вы хотите отображать имена переменных в виде текста, а не отображать их значения, вы должны заключить строку в одинарные кавычки.
'Это имена наших переменных $a, $b, $c.'
В этом случае PowerShell вообще не распознает $a, $b и $c как переменные — только как обычные строки.
Тип данных
До сих пор мы работали только с двумя типами данных: строками и целыми числами (точнее, 32-битными целыми числами). PowerShell поддерживает многие другие типы данных, такие как числа с плавающей запятой, строки и логические значения. Вам не нужно явно объявлять тип данных переменной; PowerShell автоматически выбирает тип данных при инициализации переменной, то есть при первом присвоении значения.
Однако в некоторых случаях PowerShell не будет использовать предполагаемый тип данных, как показано в приведенном ниже примере:
$Number = Read-Host "Пожалуйста, введите число" $Квадрат=$Число*$Число Write-Host "Квадрат числа $Number равен $Square."
Если вы не спали на уроке математики, результат этого вычисления должен вас немного удивить. PowerShell ошибочно предположил, что тип данных переменной $Number — String . Поскольку арифметический оператор * перегружен (реализация оператора зависит от аргументов), во второй строке программы вместо числа умножается строка.
Второй аргумент оператора * всегда должен быть числом, поэтому PowerShell автоматически преобразует тип данных $Number в Int32 . Однако первый аргумент также может быть строкой. В результате PowerShell определяет значение выражения «2»*2, равное 22 (строка «2» повторяется два раза).
PowerShell не только автоматически назначает тип данных при инициализации переменной, но и тип данных может изменяться на лету, когда исходный тип данных не подходит для операции. В приведенном выше примере PowerShell требуется число для оператора *; поскольку строка «2» очень похожа на число, она просто преобразует ее в целое число 2.
Однако, если не существует разумного способа автоматического преобразования типа данных, и тип данных не подходит для операции, PowerShell выдаст ошибку. Например, приведенные ниже строки будут выдавать сообщение об ошибке «Невозможно преобразовать значение ‘b’ в тип ‘System.Int32.’»
$a = «a» $б = "б" $a*$b
Однако следующий пример, который выглядит очень похоже, проходит через:
$a = "a" $б = "2" $a*$b
Важно отметить, что автоматическое преобразование не изменяет тип данных переменной. Несмотря на то, что значение переменной $b в примере использовалось в расчетах как целое число, ее тип данных по-прежнему равен 9. 0710 Строка . Чтобы определить тип переменной, вы можете использовать метод GetType() :
$b.GetType().Name
Если вас удивляет, что переменная снабжена методом, у вас будет ждать следующего поста, в котором я раскрою секрет вышеприведенной команды.
Нам не нужно полагаться на способность PowerShell автоматически преобразовывать типы данных, если мы сообщаем интерпретатору, что ожидаем ввода числа. Это гарантирует, что наш скрипт работает так, как задумано:
[Int]$Number = Read-Host "Пожалуйста, введите число" $Квадрат=$Число*$Число Write-Host "Квадрат числа $Number равен $Square."
В приведенном выше фрагменте кода мы явно объявили число как Int32 (целое число), заключив имя типа в квадратные скобки перед именем переменной. Переменная называется «слабо типизированной», если вы только неявно объявляете ее тип данных, присваивая значение определенного типа. Если вы явно объявляете тип данных переменной в своем скрипте, переменная является строго типизированной.
Как показано в приведенном выше примере, явное объявление типов переменных может предотвратить нежелательные результаты в ваших сценариях и сделать их более надежными. Однако это не единственная причина, по которой имеет смысл работать со строго типизированными переменными. То, что вы можете делать со значением переменной, часто зависит от ее типа данных.
Например, вы можете сохранить определенную дату в переменной типа данных String и использовать тип данных DateTime , предназначенный для этой цели. Пока вы хотите отображать только дату, не имеет значения, какой тип данных вы используете. Однако, если вы хотите использовать переменную в вычислениях, вы должны объявить ее как 9.0710 ДатаВремя .
Допустим, вы импортировали даты из файла журнала и хотите узнать, сколько дней прошло между определенной датой и сегодняшней датой:
[DateTime]$Date = "28 февраля 2015 г." $Today = Get-Date $Дней = ($Сегодня - $Дата).Дней Write-Host «Хакер зашифровал все ваши серверы $ дней назад».
Если вы пропустите объявление типа данных в приведенном выше примере, PowerShell вежливо проинформирует вас красным сообщением о том, что что-то пошло не так: «Обнаружено несколько неоднозначных перегрузок для…». Да, оператор — тоже перегружен.
Ниже приведен список некоторых часто используемых типов данных:
Название типа данных | Описание |
[ARRARY] | 9074|
[ARRARY] | 9074|
[ARRARY] | 9074|
[ARRARY] | 9074|
[ARRAY] | 9074|
[ARRAY] | 9074|
or FALSE | |
[DateTime] | Date and time |
[Guid] | Globally unique 32-byte identifier |
[HashTable] | Hash table, collection of key-value pairs |
[Int32], [Int] | 32-bit integers |
[PsObject] | PowerShell object |
[Regex] | Regular expression |
[ScriptBlock] | PowerShell script block |
[Single], [Float] | Число с плавающей запятой |
[String] | String |
[Switch] | |
[TimeSpan] | Временной интервал |
[XmlDocument] | XML-документ |
В следующем посте я расскажу об области видимости переменной.