Базовый синтаксис и операции в Python

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

Переменные и типы данных

Переменные в Python используются для хранения данных. Тип переменной определяется автоматически при присвоении значения.

Присвоение переменных:

x = 10          # Целое число (int)
y = 3.14        # Число с плавающей точкой (float)
name = "Alice"  # Строка (str)
is_active = True  # Логическое значение (bool)

Типы данных:

Python поддерживает несколько встроенных типов данных:

  1. int: Целые числа

  2. float: Числа с плавающей точкой

  3. str: Строки

  4. bool: Логические значения (True, False)

  5. list: Списки

  6. tuple: Кортежи (неизменяемые списки)

  7. dict: Словари (коллекции пар "ключ-значение")

  8. set: Множества (неупорядоченные коллекции уникальных элементов)

Арифметические операторы

Арифметические операторы используются для выполнения основных математических операций.

Примеры:

a = 10
b = 3

print(a + b)  # Сложение: 13
print(a - b)  # Вычитание: 7
print(a * b)  # Умножение: 30
print(a / b)  # Деление: 3.333...
print(a // b)  # Целочисленное деление: 3
print(a % b)  # Остаток от деления: 1
print(a ** b)  # Возведение в степень: 1000

Операторы сравнения

Эти операторы сравнивают два значения и возвращают логическое значение (True или False).

  • Примеры:

x = 5
y = 10

print(x == y)  # Равно: False
print(x != y)  # Не равно: True
print(x > y)   # Больше: False
print(x < y)   # Меньше: True
print(x >= y)  # Больше или равно: False
print(x <= y)  # Меньше или равно: True

Логические операторы

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

  • Примеры:

x = True
y = False

print(x and y)  # Логическое "И": False
print(x or y)   # Логическое "ИЛИ": True
print(not x)    # Логическое "НЕ": False

Условные операторы

Условные операторы позволяют выполнять блоки кода в зависимости от условия.

  • Примеры:

age = 20

if age >= 18:
    print("Вы взрослый.")
else:
    print("Вы несовершеннолетний.")

Можно использовать несколько условий с elif:

score = 85

if score >= 90:
    print("Отлично!")
elif score >= 75:
    print("Хорошо.")
else:
    print("Нужно подтянуть.")

Циклы

Циклы используются для многократного выполнения блока кода.

Цикл for:

Используется для итерации по последовательностям, таким как списки, строки или диапазоны.

for i in range(5):
    print(i)  # Выводит числа от 0 до 4

Цикл while:

Выполняет блок кода до тех пор, пока условие истинно.

count = 0

while count < 5:
    print(count)
    count += 1  # Увеличиваем значение count на 1 на каждом шаге

Функции

Функции позволяют группировать код, который можно многократно вызывать.

Создание функции:

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))  # Вывод: Hello, Alice!

Функции с несколькими аргументами:

def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # Вывод: 8

Функции с аргументами по умолчанию:

def greet(name="Guest"):
    return f"Hello, {name}!"

print(greet())  # Вывод: Hello, Guest!
print(greet("Bob"))  # Вывод: Hello, Bob!

Работа со строками

Строки — это последовательности символов. В Python они неизменяемы.

Конкатенация строк:

first_name = "Alice"
last_name = "Smith"
full_name = first_name + " " + last_name
print(full_name)  # Вывод: Alice Smith

Методы строк:

text = "Hello, World!"

print(text.lower())  # Преобразует в нижний регистр: "hello, world!"
print(text.upper())  # Преобразует в верхний регистр: "HELLO, WORLD!"
print(text.replace("World", "Python"))  # Замена подстроки: "Hello, Python!"
print(text.split(","))  # Разделение строки по символу: ['Hello', ' World!']

Форматирование строк:

name = "Alice"
age = 30

# Старый способ форматирования
print("My name is %s and I am %d years old." % (name, age))

# Современный способ с использованием метода format
print("My name is {} and I am {} years old.".format(name, age))

# f-строки (Python 3.6+)
print(f"My name is {name} and I am {age} years old.")

Списки

Списки — это упорядоченные изменяемые коллекции элементов.

Создание списка и доступ к элементам:

numbers = [1, 2, 3, 4, 5]
print(numbers[0])  # Вывод: 1

Методы списка:

numbers.append(6)  # Добавляет элемент в конец списка
print(numbers)  # Вывод: [1, 2, 3, 4, 5, 6]

numbers.remove(3)  # Удаляет первый элемент, равный 3
print(numbers)  # Вывод: [1, 2, 4, 5, 6]

print(len(numbers))  # Выводит длину списка: 5

Итерация по списку:

for number in numbers:
    print(number)

Кортежи

Кортежи похожи на списки, но они неизменяемы.

Создание и доступ к элементам:

coordinates = (10, 20)
print(coordinates[0])  # Вывод: 10

Кортежи используют для хранения данных, которые не должны изменяться.

Словари

Словари — это коллекции пар "ключ-значение".

Создание словаря и доступ к значениям:

person = {"name": "Alice", "age": 25}
print(person["name"])  # Вывод: Alice

Добавление и изменение элементов:

person["age"] = 26  # Изменение значения
person["city"] = "New York"  # Добавление новой пары
print(person)  # Вывод: {'name': 'Alice', 'age': 26, 'city': 'New York'}

Методы словарей:

print(person.keys())  # Выводит все ключи словаря
print(person.values())  # Выводит все значения словаря

Множества

Множества — это неупорядоченные коллекции уникальных элементов.

Создание и работа с множествами:

unique_numbers = {1, 2, 3, 4, 5}

unique_numbers.add(6)  # Добавляет элемент в множество
unique_numbers.remove(3)  # Удаляет элемент из множества

print(unique_numbers)  # Вывод: {1, 2, 4, 5, 6}

Множества полезны для выполнения операций с уникальными элементами, таких как пересечение, объединение и разность.

Исключения

Исключения позволяют обрабатывать ошибки и исключительные ситуации, которые могут возникнуть во время выполнения программы.

Обработка исключений:

С помощью конструкции try-except можно перехватывать и обрабатывать исключения.

try:
    result = 10 / 0  # Попытка деления на ноль
except ZeroDivisionError:
    print("Ошибка: Деление на ноль!")

Множественные исключения:

Можно перехватывать несколько типов исключений.

try:
    value = int("abc")  # Попытка преобразования строки в целое число
except (ValueError, TypeError) as e:
    print(f"Ошибка: {e}")

Использование else и finally:

Конструкция else выполняется, если в блоке try не возникло исключений, а finally выполняется всегда, независимо от того, возникло ли исключение или нет.

try:
    file = open("example.txt", "r")
except FileNotFoundError:
    print("Файл не найден.")
else:
    content = file.read()
    print(content)
finally:
    file.close()

Работа с файлами

Python предоставляет простой способ работы с файлами.

Чтение и запись в файл:

# Запись в файл
with open("example.txt", "w") as file:
    file.write("Hello, world!")

# Чтение из файла
with open("example.txt", "r") as file:
    content = file.read()
    print(content)  # Вывод: Hello, world!

Использование конструкции with автоматически закрывает файл после завершения работы с ним.

Импорт модулей

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

Импорт модуля:

import math
print(math.sqrt(16))  # Вывод: 4.0

Импорт конкретных функций или классов:

from math import pi, sqrt
print(pi)  # Вывод: 3.141592653589793
print(sqrt(25))  # Вывод: 5.0

Импорт с псевдонимом:

import numpy as np
array = np.array([1, 2, 3])
print(array)  # Вывод: [1 2 3]

Списковые выражения (List Comprehensions)

Списковые выражения позволяют создавать новые списки с помощью компактного синтаксиса.

Пример:

squares = [x ** 2 for x in range(10)]
print(squares)  # Вывод: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Списковые выражения также могут включать условия:

even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)  # Вывод: [0, 4, 16, 36, 64]

Генераторы

Генераторы позволяют создавать итераторы с помощью функций. Они используют ключевое слово yield для возврата значений.

Пример генератора:

def count_up_to(max):
    count = 1
    while count <= max:
        yield count
        count += 1

for num in count_up_to(5):
    print(num)  # Вывод: 1 2 3 4 5

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

Декораторы

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

Пример декоратора:

def my_decorator(func):
    def wrapper():
        print("Что-то происходит перед вызовом функции.")
        func()
        print("Что-то происходит после вызова функции.")
    return wrapper

@my_decorator
def say_hello():
    print("Привет!")

say_hello()

Вывод:

Что-то происходит перед вызовом функции.
Привет!
Что-то происходит после вызова функции.

Классы и объекты

Python поддерживает объектно-ориентированное программирование. Вы можете создавать собственные классы для моделирования объектов.

Создание класса:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        return f"{self.name} говорит: Гав!"

my_dog = Dog("Rex", 5)
print(my_dog.bark())  # Вывод: Rex говорит: Гав!

Свойства и методы

Классы могут содержать свойства и методы для работы с данными.

Свойства:

class Person:
    def __init__(self, name):
        self.name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if not value:
            raise ValueError("Имя не может быть пустым.")
        self._name = value

person = Person("Alice")
print(person.name)  # Вывод: Alice

Методы:

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

class MathOperations:
    @staticmethod
    def add(a, b):
        return a + b

print(MathOperations.add(5, 3))  # Вывод: 8

Заключение

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

Last updated