В этой главе подробно рассказывается о различных встроенных функциях в Python, операциях файлового ввода-вывода и концепциях перегрузки.
Встроенные функции Python
Интерпретатор Python имеет ряд функций, называемых встроенными функциями, которые легко доступны для использования. В последней версии Python содержит 68 встроенных функций, перечисленных в таблице ниже.
ВСТРОЕННЫЕ ФУНКЦИИ | ||||
---|---|---|---|---|
абс () | DICT () | Помогите() | мин () | SetAttr () |
все() | DIR () | гекс () | следующий() | ломтик() |
любой() | divmod () | Я бы() | Объект () | отсортировано () |
ASCII () | перечислить () | вход () | Октябрь () | STATICMETHOD () |
бен () | Eval () | Int () | открыть() | ул () |
BOOL () | Exec () | isinstance () | Ord () | сумма () |
ByteArray () | фильтр() | issubclass () | POW () | супер() |
байт () | плавать () | ITER () | Распечатать() | кортеж () |
вызываемый () | формат() | LEN () | имущество() | тип() |
CHR () | frozenset () | список() | спектр() | вары () |
classmethod () | GetAttr () | местные () | магнезии () | застежка-молния () |
компиляции () | глобалы () | карта() | негативы () | __Импортировать__() |
сложный() | hasattr () | Максимум() | круглый() | |
delattr () | хэш () | memoryview () | задавать() |
В этом разделе кратко обсуждаются некоторые важные функции —
функция len ()
Функция len () получает длину строк, списка или коллекций. Возвращает длину или количество элементов объекта, где объект может быть строкой, списком или коллекцией.
>>> len(['hello', 9 , 45.0, 24]) 4
Функция len () внутренне работает как list .__ len __ () или кортеж .__ len __ () . Таким образом, обратите внимание, что len () работает только с объектами, которые имеют метод __len __ () .
>>> set1 {1, 2, 3, 4} >>> set1.__len__() 4
Однако на практике мы предпочитаем len () вместо функции __len __ () по следующим причинам:
-
Это более эффективно. И не обязательно, чтобы конкретный метод был написан для отказа в доступе к специальным методам, таким как __len__.
-
Это легко поддерживать.
-
Поддерживает обратную совместимость.
Это более эффективно. И не обязательно, чтобы конкретный метод был написан для отказа в доступе к специальным методам, таким как __len__.
Это легко поддерживать.
Поддерживает обратную совместимость.
Перевернутый (сло)
Возвращает обратный итератор. seq должен быть объектом, который имеет метод __reversed __ () или поддерживает протокол последовательности (метод __len __ () и метод __getitem __ ()). Обычно он используется для циклов for, когда мы хотим перебирать элементы сзади и вперед.
>>> normal_list = [2, 4, 5, 7, 9] >>> >>> class CustomSequence(): def __len__(self): return 5 def __getitem__(self,index): return "x{0}".format(index) >>> class funkyback(): def __reversed__(self): return 'backwards!' >>> for seq in normal_list, CustomSequence(), funkyback(): print('\n{}: '.format(seq.__class__.__name__), end="") for item in reversed(seq): print(item, end=", ")
Цикл for в конце печатает перевернутый список обычного списка и экземпляры двух пользовательских последовательностей. Вывод показывает, что reversed () работает на всех трех из них, но имеет совершенно разные результаты, когда мы определяем __reversed__ .
Выход
Вы можете наблюдать следующий вывод при выполнении кода, приведенного выше —
list: 9, 7, 5, 4, 2, CustomSequence: x4, x3, x2, x1, x0, funkyback: b, a, c, k, w, a, r, d, s, !,
перечислять
Метод enumerate () добавляет счетчик к итерируемому и возвращает объект перечисления.
Синтаксис enumerate () — это
enumerate(iterable, start = 0)
Здесь второй аргумент start является необязательным, и по умолчанию индекс начинается с нуля (0).
>>> # Enumerate >>> names = ['Rajesh', 'Rahul', 'Aarav', 'Sahil', 'Trevor'] >>> enumerate(names) <enumerate object at 0x031D9F80> >>> list(enumerate(names)) [(0, 'Rajesh'), (1, 'Rahul'), (2, 'Aarav'), (3, 'Sahil'), (4, 'Trevor')] >>>
Таким образом, enumerate () возвращает итератор, который выдает кортеж, который хранит количество элементов в переданной последовательности. Поскольку возвращаемое значение является итератором, прямой доступ к нему не очень полезен. Лучшим подходом для enumerate () является учет в цикле for.
>>> for i, n in enumerate(names): print('Names number: ' + str(i)) print(n) Names number: 0 Rajesh Names number: 1 Rahul Names number: 2 Aarav Names number: 3 Sahil Names number: 4 Trevor
В стандартной библиотеке много других функций, и вот еще один список некоторых более широко используемых функций:
-
hasattr, getattr, setattr и delattr, которые позволяют атрибутам объекта манипулировать их строковыми именами.
-
all и any, которые принимают итерируемый объект и возвращают True, если все или любые из элементов оцениваются как true.
-
nzip, который принимает две или более последовательностей и возвращает новую последовательность кортежей, где каждый кортеж содержит одно значение из каждой последовательности.
hasattr, getattr, setattr и delattr, которые позволяют атрибутам объекта манипулировать их строковыми именами.
all и any, которые принимают итерируемый объект и возвращают True, если все или любые из элементов оцениваются как true.
nzip, который принимает две или более последовательностей и возвращает новую последовательность кортежей, где каждый кортеж содержит одно значение из каждой последовательности.
Файловый ввод / вывод
Понятие файлов связано с термином объектно-ориентированное программирование. Python обернул интерфейс, который операционные системы предоставили в абстракции, что позволяет нам работать с файловыми объектами.
Встроенная функция open () используется для открытия файла и возврата объекта файла. Это наиболее часто используемая функция с двумя аргументами:
open(filename, mode)
Функция open () вызывает два аргумента, первый — имя файла, а второй — режим. Здесь режим может быть «r» для режима «только чтение», «w» только для записи (существующий файл с тем же именем будет удален), а «a» открывает файл для добавления, любые данные, записанные в файл, добавляются автоматически к концу. «r +» открывает файл для чтения и записи. Режим по умолчанию только для чтения.
В Windows добавленный в режим «b» открывает файл в двоичном режиме, поэтому существуют также режимы, такие как «rb», «wb» и «r + b».
>>> text = 'This is the first line' >>> file = open('datawork','w') >>> file.write(text) 22 >>> file.close()
В некоторых случаях мы просто хотим добавить к существующему файлу, а не перезаписать его, для этого мы можем предоставить значение «a» в качестве аргумента режима, чтобы добавить в конец файла, а не полностью перезаписывать существующий файл содержание.
>>> f = open('datawork','a') >>> text1 = ' This is second line' >>> f.write(text1) 20 >>> f.close()
Когда файл открыт для чтения, мы можем вызвать метод read, readline или readlines, чтобы получить содержимое файла. Метод read возвращает все содержимое файла в виде объекта str или bytes, в зависимости от того, является ли второй аргумент ‘b’.
Для удобства чтения и во избежание чтения большого файла за один раз, часто лучше использовать цикл for непосредственно для файлового объекта. Для текстовых файлов он будет читать каждую строку, по одной за раз, и мы можем обработать ее внутри тела цикла. Однако для двоичных файлов лучше читать фрагменты данных фиксированного размера, используя метод read (), передавая параметр для максимального количества байтов для чтения.
>>> f = open('fileone','r+') >>> f.readline() 'This is the first line. \n' >>> f.readline() 'This is the second line. \n'
Запись в файл с помощью метода write для файловых объектов записывает в файл объект строки (байты для двоичных данных). Метод writelines принимает последовательность строк и записывает каждое из повторяющихся значений в файл. Метод writelines не добавляет новую строку после каждого элемента в последовательности.
Наконец, метод close () должен быть вызван, когда мы закончим чтение или запись файла, чтобы гарантировать, что все буферизованные записи будут записаны на диск, что файл был должным образом очищен и все ресурсы, связанные с файлом, возвращены обратно. операционная система. Это лучший подход для вызова метода close (), но технически это произойдет автоматически, когда скрипт существует.
Альтернатива перегрузке метода
Перегрузка метода означает наличие нескольких методов с одинаковым именем, которые принимают разные наборы аргументов.
Учитывая один метод или функцию, мы можем сами указать количество параметров. В зависимости от определения функции ее можно вызвать с нулем, одним, двумя или более параметрами.
class Human: def sayHello(self, name = None): if name is not None: print('Hello ' + name) else: print('Hello ') #Create Instance obj = Human() #Call the method, else part will be executed obj.sayHello() #Call the method with a parameter, if part will be executed obj.sayHello('Rahul')
Выход
Hello Hello Rahul
Аргументы по умолчанию
Функции тоже объекты
Вызываемый объект — это объект, который может принимать некоторые аргументы и, возможно, будет возвращать объект. Функция — это самый простой вызываемый объект в Python, но есть и другие, такие как классы или определенные экземпляры классов.
Каждая функция в Python является объектом. Объекты могут содержать методы или функции, но объект не обязательно является функцией.
def my_func(): print('My function was called') my_func.description = 'A silly function' def second_func(): print('Second function was called') second_func.description = 'One more sillier function' def another_func(func): print("The description:", end=" ") print(func.description) print('The name: ', end=' ') print(func.__name__) print('The class:', end=' ') print(func.__class__) print("Now I'll call the function passed in") func() another_func(my_func) another_func(second_func)
В приведенном выше коде мы можем передать две разные функции в качестве аргумента в нашу третью функцию и получить разные выходные данные для каждой —
The description: A silly function The name: my_func The class:Now I'll call the function passed in My function was called The description: One more sillier function The name: second_func The class: Now I'll call the function passed in Second function was called
вызываемые объекты
Так же, как функции — это объекты, для которых могут быть установлены атрибуты, можно создать объект, который можно вызывать так, как если бы он был функцией.
В Python любой объект с методом __call __ () может быть вызван с использованием синтаксиса вызова функции.