• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Урок Python #3 - функции, работа с файлами

Доброго времени суток, уважаемые форумчане! Мы продолжаем наши уроки по языку Python. Сегодня мы рассмотрим функции и работу с текстовыми файлами.


Работа с файлами
Язык программирования Python позволяет выполнять операции с текстовыми файлами, давайте рассмотрим это чуть подробнее:
  • read - считывает содержимое файла. (результат можно присвоить в качестве значения переменной);
  • close - Закрывает и сохраняет файл;
  • truncate - очищает файл (будьте осторожны, чтобы не стереть важные данные);
  • readline - считывает только одну строку из текстового файла;
  • write(stuff) - записывает данные в файл;
  • seek(0) - перемещает указатель текущей позиции чтения/записи в начало файла.
Это основные команды для работы с файлами, которые вам нужно запомнить, и уметь использовать.

В квадратных скобках буду писать название файла(Для более удобных отсылок позже).
Давайте напишем код:
[1.py]
Python:
from sys import argv

script, first_file, second_file = argv #присваеваем к переменным имена файлов (имена задаются при запуске. например через командную оболочку.)

ffirst_file = open(first_file)    
data_first_file = ffirst_file.read()

op_file = open(second_file, 'w')
op_file.write(data_first_file)

op_file.close()
ffirst_file.close()

print("Выполнено")
Результат выполнения кода:
1.PNG


Данная программа копирует все строки из файла “1.txt” и помещает их в “2.txt”.
Алгоритм действий программы:
  1. Открываем файл “1.txt”;
  2. Записываем содержимое файла в переменную “data_first_file”;
  3. Открываем файл “2.txt” для записи;
  4. Записываем содержимое переменной “data_first_file” в файл “2.txt”.

Функции

Практически каждая программа содержит в себе множество различных функций. Что же это такое? Сейчас разберёмся.
Функции присваивают имена фрагментам кода так, как переменные именуют строки и числа. Стоит учитывать что функции, как и переменные чувствительны к регистру.

Сейчас мы напишем код, и разберём его:
[2.py]
Python:
a = int(input("Введите первое число"))
b = int(input("Введите второе число"))

print(f"a = {a}, b = {b}")

def hello():
    print("Hello world")

def aplusb(first, second):
    c = first + second
    print(f"{first} + {second} = {c}")

aplusb(a, b)
hello()
hello()
aplusb(1, 5)
Результат выполнения кода:
2.PNG


Разбор кода:
1-2 строки - мы получаем значения переменных от пользователя(и конвертируем их в целочисленный тип);
4 строка - выводим значения переменных a, b;
6-7 строки - объявляем(создаём) функцию(def) по имени “hello”, которая будет выводить “Hello world”.
9-11 строки - объявляем функцию по имени “aplusb”, которая принимает два аргумента(first, second). Складываем эти переменные, помещаем результат в переменную “c”, и выводим результат.
13-16 строки - вызывают объявленные нами функции.

Имена функций могут быть практически любыми. Так же, как и имена переменных, имена функций нельзя начинать с цифры. В именах можно использовать латинские буквы, цифры и нижнее подчёркивание. Функции могут как иметь аргументы, так и не иметь их. В качестве аргумента мы можем непосредственно передать определенное значение. Также можем передать ей вычисления. Или же передать переменные.
Все аргументы указываются при вызове функций(вы это можете увидеть в 13, 16 строках).

Сейчас мы научимся присваивать полученные из функций значения переменным, с помощью ключевого слова “return”.

Напишем следующий код:
[3.py]
Python:
def plus(a, b):
    print(f"Складываем {a} и {b}")
    return a + b

def minus(a, b):
    print(f"Вычитаем {a} из {b}")
    return a - b

def umnozhit(a, b):
    print(f"Умножаем {a} на {b}")
    return a * b

def delit(a, b):
    print(f"Делим {a} на {b}")
    return a / b

urok = delit(6, 2)
weight = umnozhit(40, 2)
age = plus(20, 5)
height = minus(180, 8)

print(f" тебе {age} лет, твой рост {height} см, твой вес {weight} кг, сейчас {urok} урок")

Результат выполнения кода:
3.PNG


Мы создали функции для выполнения некоторых математических операций. Вот так они работают:
  1. Та или иная функция вызывается с аргументами “a” и “b”.
  2. Выполняется математическая операция.
  3. Далее “print” выводит нам всё то что делает функция.
  4. После этого интерпретатор видит “return” и возвращает нужное нам значение.


Практические задания
  1. Напишите комментарии для программы (1.py) копирующей текст из одного файла в другой;
  2. Самостоятельно напишите программу выполняющую математические операции(с использованием функций);
  3. 24 * 5 - 48 / 48 + 24 - возьмите за основу данное выражение, и сделайте на его основе функцию принимающую 3 аргумента (x, y, z).
Постарайтесь чуть тщательнее разобраться с функциями, так как мы в будущем будем часто их использовать. В следующем уроке мы узнаем что такое условный оператор “if”, как он работает, и в каких случаях применяется.

Спасибо за внимание! Оставляйте свои вопросы, постараюсь ответить на все ваши вопросы.
 
Последнее редактирование:

grigbk

One Level
08.09.2020
2
6
BIT
0
Функции присваивают имена фрагментам кода так, как переменные именуют строки и числа.
По-моему весьма туманное определение. Проще сказать, что пользовательская функция - это способ многократно выполнить код, написанный один раз.
Имена функций могут быть практически любыми...
Думаю, нужно уточнить, что есть встроенные функции, имена которых нельзя использовать при создании пользовательских функций. Например open - встроенная функция открытия файла
 
  • Нравится
Реакции: webinar, Deanned и userCut

breadrock1

Member
04.07.2019
6
0
BIT
0
Я извиняюсь перед автором за возможно обидные слова, но, честно говоря, это ужасная статья.

Основная мысль так и не ясна, толи речь идёт о работе с файлами, толи объяснение понятия `функция` - почему бы в таком случае не разделить их на две статьи?! Причем обе части написаны крайне дилетантским как стилем изложения, так и технически.

И самое главное замечание - зачем она? Цель написания статьи можно разделить, как минимум, на несколько категорий:

- райтап;
- систематизация знаний;
- описание чего-то нового (методики, разработки и т.п.).

В твоём случае подходит лишь второй пункт, однако разве можно это назвать систематизацией? Если бы ты раскрыл редко используемые функции для работы с файлами с примерами кода, тогда бы никаких претензий по этому поводу не было; если бы здесь были описаны все функции с примером использования, тоже не было бы никаких претензий...

К сожалению, потратил время на чтение статьи(
 
  • Нравится
  • Не нравится
Реакции: webinar и Deanned
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!