В этой статье рассказывается о функциях и файлах. Функции играют важную роль в программировании. Мы можем объединить несколько инструкций, чтобы сформировать функцию, которая может принимать входящие параметры и генерировать выходные данные после выполнения связанных внутренних вычислений. Инкапсуляция инструкций в функции позволяет избежать повторного использования нескольких функций. Эта инструкция делает код избыточным, что делает код более кратким и более заметным.
Работа с файлом в основном представляет некоторые методы чтения и записи файлов, а также различия и вопросы, требующие внимания каждого метода.Наконец, будет представлен метод использования модуля pickle для хранения сложных данных.
функция
Функция в основном включает два аспекта:
• Встроенные функции
• Пользовательские функции
Встроенные функции — это некоторые функции, поставляемые с python. Для их вызова нам нужно только передать функции соответствующие параметры. Print — самая простая и типичная встроенная функция, а пользовательские функции требуют инкапсуляции нескольких функций в соответствии с Утверждения образуют новую функцию.
пользовательская функция
1. Создайте функцию
Далее вводятся некоторые атрибутивные слова путем настройки функции, вычисляющей объем прямоугольного параллелепипеда:
In [1]: def vol(length,width,height):
...: volume = length*width*height
...: return volume
В приведенных выше трех строках кода вам нужно знать:
•def: ключевое слово, определяющее функцию
• длина, ширина, высота: формальные параметры функции
• return: возвращаемое значение функции
2. Вызовите функцию
После создания пользовательской функции вы можете вызвать функцию по имени функции (аргументу):
In [2]: vol(2,2,3)
Out[2]: 12
При передаче параметров следует учитывать, что фактические параметры должны точно совпадать, такие как позиция, номер и т. д., иначе возникнет ошибка.
In [4]: vol(2,2)
TypeError: vol() missing 1 required positional argument: 'height'
Если вы хотите изменить порядок параметров, то вам нужно указать, для какого параметра передавать значение:
In [8]: vol(width=3,length=4,height=5)
Out[8]: 60
3. Значение функции по умолчанию
Формальные параметры функции также могут указывать значения по умолчанию.Если мы установим значение параметра высоты по умолчанию в функции vol выше на 2:
In [6]: def vol(length,width,height=2):
...: volume = length*width*height
...: return volume
...:
In [7]: vol(2,2)
Out[7]: 8
На данный момент в функцию vol передаются только два фактических параметра, можно обнаружить, что об ошибке не сообщается, а возвращаемое значение равно 8. То есть, если параметр имеет значение по умолчанию, а функция вызывается без передачи значения для этого параметра, то параметр принимает значение по умолчанию.
4. Функция сбора (переменная функция)
Для формальных параметров функции мы также можем сделать их переменными:
In [9]: def test(*params):
...: print('参数的长度为%d'%len(params))
...: print('第三个参数为%s'%params[2])
...:
In [10]: test(1,2,'mao',3.14,'pp')
参数的长度为5
第三个参数为mao
Здесь вам нужно пометить формальные параметры знаком *, а затем вы можете передать несколько фактических параметров при вызове параметров.
5. Глобальное и локальное
Константы, определенные в функции, называются локальными переменными, то есть их можно вызывать только в этой функции, и они не принимаются для использования вне функции:
In [12]: def test(a,b):
...: c = 2
...: return a*b*c
In [13]: test(2,2)
Out[13]: 8
In [14]: print(c)
NameError: name 'c' is not defined
6. Анонимная функция лямбда
Если оператор внутри функции не очень сложен и объем кода невелик, мы можем использовать анонимные функции, такие как функция, которая вычисляет объем выше:
In [20]: vol = lambda a,b,c:a*b*c
In [21]: vol(2,2,3)
Out[21]: 12
В операторах, где часто вложены лямбда-выражения, их очень удобно использовать совместно с родственными функциями, примеры будут приведены позже.
7. Встроенные функции
Несколько вложенных функций также поддерживаются при определении функций, но вам нужно обратить внимание на логическую связь при их использовании:
In [24]: def fun1(a):
...: b = 2
...: def fun2():
...: return a*b
...: return fun2()
...:
In [25]: fun1(4)
Out[25]: 8
Часто используемые встроенные функции
В первых двух статьях были рассмотрены встроенные функции, такие как часто используемые len, sorted, reverse, sum и т. д. Кроме того, будет представлено еще несколько основных встроенных функций.
1.макс. и мин.
求一个序列中最大值和最小值:
In [28]: min(1,2,3)
Out[28]: 1
In [29]: max(1,2,3)
Out[29]: 3
2.abs
Найдите абсолютное значение числа:
In [31]: abs(-1)
Out[31]: 1
3.round
Округлить до ближайшего десятичного знака:
In [32]: round(3.555,2)
Out[32]: 3.56
4.pow
Возведите число в степень или возьмите остаток:
In [33]: pow(2,3)#2*2*2
Out[33]: 8
In [34]: pow(2,3,3)#(2*2*2)%3
Out[34]: 2
5.divmod
Вычислите частное и остаток числа:
In [36]: divmod(10,3)
Out[36]: (3, 1)
6.help
Чтобы запросить справочную документацию для функции:
In [37]: help(abs)
Help on built-in function abs in module builtins:
abs(x, /)
Return the absolute value of the argument.
7.filter
Функция filter() принимает два параметра, первый параметр может быть функцией или None, а второй параметр — последовательностью. Функция состоит в том, чтобы судить о каждом элементе, возвращать True или False, filter() автоматически отфильтровывает элементы, которые являются False в последовательности в соответствии с результатом оценки, и оставляет элементы, которые являются True, что можно использовать в сочетании с лямбда-выражениями. :
In [38]: list(filter(lambda x:x%2,range(10)))
Out[38]: [1, 3, 5, 7, 9]
8.map
Функция map() принимает два параметра: один — функция, а другой — последовательность. Роль заключается в применении функции к каждому элементу в последовательности, которую также можно использовать в сочетании с лямбда-выражениями:
In [42]: list(map(lambda x: x*2,range(10)))
Out[42]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
документ
Что касается операций чтения и записи файлов, то должна встречаться функция open(). Если файл уже существует, она откроет файл. Если он не существует, он создаст файл. Обычное использование требует двух параметров: open(filename , Режим).
Первый параметр — это имя файла, а второй параметр указывает, как файл будет использоваться.Дополнительные режимы обычно используются следующим образом:
• 'r': открыть файл только для чтения (по умолчанию).
• 'w': открыть файл в режиме записи, перезаписав существующие файлы.
• 'a': открыть файл в режиме записи, добавить запись в конце, если файл существует
• 'b': открыть файл в двоичном режиме, а затем будет комбинация режимов, таких как rb, wb и т. д.
1.read() метод для чтения
Метод read() может передавать параметр size, который представляет собой длину прочитанного содержимого. размер является необязательным параметром.Если не передано или отрицательное число, будет прочитано все содержимое файла:
In [52]: fb = open('E:/Python基础/test.txt','r')
In [53]: fb.read(10)
Out[53]: 'nai\nniatan'
In [54]: fb.read()
Out[54]: 'g\nnaitangmao'
In [55]: fb.read()
Out[55]: ''
Следует отметить три момента:
• 1. Новая строка в исходном файле представлена символом новой строки '\n' при чтении и также занимает единичную длину.
• 2. Контент, который был прочитан, не может быть прочитан повторно
• 3. Если прочитанное содержимое возвращает пустую строку, это означает, что достигнут конец файла.
2. метод readline()
Метод readline() предназначен для чтения одной строки из файла, и в конце данных в этой строке будет новая строка '\n'. Если в одной строке нет данных, только '\n' Аналогично, при возврате Пустая строка указывает на то, что достигнут конец файла.
In [59]: fb1 = open('E:/Python基础/test.txt','r')
In [60]: fb1.readline()
Out[60]: 'nai\n'
3. метод readlines()
Метод readlines() также используется для чтения всех файлов.Отличие от read() заключается в том, что первый читает строку за строкой и, наконец, возвращает список, где каждая строка данных является элементом списка:
In [72]: fb3 = open('E:/Python基础/test.txt','r')
In [73]: fb3.readlines()
Out[73]: ['nai\n', 'niatang\n', 'naitangmao']
4. Перейдите к файловому объекту для чтения
Контент, прочитанный таким образом, будет выглядеть более стандартизированным:
In [81]: for i in fb4:
...: print(i,end = '')
...:
nai
niatang
naitangmao
5. Запись файла
При написании нам нужно обратить внимание на два момента:
• Если записанные данные не являются строковыми, их необходимо преобразовать в строку.
• При написании следует обращать внимание на то, перезаписывается ли оно или добавляется.
In [85]: fb5 = open('E:/Python基础/test1.txt','w')
In [89]: list1 = [1,2]
In [91]: fb5.write(str(list1))
Out[91]: 6
После записи с помощью write он вернет длину записанной строки.
6. Закрыть файл
Помни, помни, помни! Если вы открываете файл с помощью open(), обязательно закройте файл с помощью close() после завершения операции.
In [92]: fb5.close()
7.с путем
Если вы чувствуете, что ваша память плохая, и вы всегда забываете закрыть файл с помощью метода close(), то вам следует привыкнуть к обработке файлового объекта с помощью, которая может автоматически закрыть файл после того, как файл будет израсходован.
In [93]: with open('E:/Python基础/test.txt','r') as fb:
...: data = fb.read()
In [95]: fb.closed
Out[95]: True
8.pickle
Выше сказано, что запись не строки в файл не допускается.Если есть способ сохранить словарь или список данных? Модуль pickle может реализовать это сериализованное хранение и чтение:
In [96]: import pickle
In [97]: list1 = ['nai','tang','mao',1,2,3]
In [98]: pic_f = open('E:/Python基础/list.pkl','wb')
In [99]: pickle.dump(list1,pic_f)
In [100]: pic_f.close()
Метод dump() получает два параметра, первый - содержимое, которое нужно сохранить, а второй - файловый объект, который нужно сохранить.После операции вам нужно закрыть файловый объект с помощью close().После сохранения вы можете используйте метод load() для загрузки файла Content.
In [102]: pic_f = open('E:/Python基础/list.pkl','rb')
In [103]: list2 = pickle.load(pic_f)
In [104]: list2
Out[104]: ['nai', 'tang', 'mao', 1, 2, 3]
In [105]: pic_f.close()
При использовании pickle для хранения или чтения обратите внимание на работу файловых объектов в бинарном виде, то есть ‘wb’ и ‘rb’, pickle очень подходит для хранения данных со сложными типами данных и большим объемом данных.