Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7615.pdf
Скачиваний:
2
Добавлен:
23.11.2023
Размер:
1.17 Mб
Скачать

def func1(s):

"""

Print a string 's' and tell how many characters it has

"""

print(s + " has " + str(len(s)) + " characters") help(func1)

Help on function func1 in module main :

func1(s)

Print a string 's' and tell how many characters it has

func1("test")

test has 4 characters

Функции, которые возвращают значение, используют ключевое слово return: def square(x):

"""

Return the square of x.

"""

return x ** 2 square(4)

16

Мы можем вернуть несколько значений из функции, используя кортежи (см. выше): def powers(x):

"""

Return a few powers of x.

"""

return x ** 2, x ** 3, x ** 4 powers(3)

(9, 27, 81)

x2, x3, x4 = powers(3)

print(x3)

27

Аргумент по умолчанию и ключевые слова

В определении функции мы можем указать значения по умолчанию для аргументов, которые принимает функция:

def myfunc(x, p=2, debug=False): if debug:

print("evaluating myfunc for x = " + str(x) + " using exponent p = " + str(p)) return x**p

Если мы не указываем значение аргумента debug при вызове функции myfunc, по умолчанию используется значение, указанное в определении функции:

myfunc(5) 25

myfunc(5, debug=True)

evaluating myfunc for x = 5 using exponent p = 2 25

Если мы явно указываем имена аргументов в вызовах функций, они не должны идти в том же порядке, что и в определении функции. Это называется keyword arguments и часто очень полезно в функциях, которые принимают много необязательных аргументов.

myfunc(p=3, debug=True, x=7)

18

evaluating myfunc for x = 7 using exponent p = 3 343

Безымянные функции (lambda функция)

В Python мы также можем создавать безымянные функции, используя ключевое слово lambda:

f1 = lambda x: x**2

# это же самое что

def f2(x): return x**2

f1(2), f2(2) (4, 4)

Этот метод полезен, например, когда мы хотим передать простую функцию в качестве аргумента другой функции, например:

#map это встроенная функция Python map(lambda x: x**2, range(-3,4)) <map at 0x7f200b516d50>

#в python 3 мы можеи использовать `list(...)` для преобразования итератора в явный список

list(map(lambda x: x**2, range(-3,4)))

[9, 4, 1, 0, 1, 4, 9]

Классы

Классы являются ключевыми функциями объектно-ориентированного программирования. Класс — это структура для представления объекта и операций, которые можно выполнять над объектом.

В Python класс может содержать атрибуты (attributes) (переменные) и методы

(methods) (функции).

Класс определяется почти как функция, но с использованием ключевого слова class, а определение класса обычно содержит ряд определений методов класса (функция в классе).

Каждый метод класса должен иметь аргумент self в качестве первого аргумента. Этот объект является самоссылкой.

Некоторые имена методов класса имеют особое значение, например:

init : Имя метода, который вызывается при первом создании объекта.

str : Метод, который вызывается, когда требуется простое строковое представление класса, например, при печати.

Больше информации см. http://docs.python.org/2/reference/datamodel.html#special- method-names

class Point:

"""

Simple class for representing a point in a Cartesian coordinate system.

"""

def init (self, x, y):

"""

Create a new Point at x, y.

"""

self.x = x self.y = y

def translate(self, dx, dy):

"""

19

Translate the point by dx and dy in the x and y direction.

"""

self.x += dx self.y += dy

def str (self):

return("Point at [%f, %f]" % (self.x, self.y))

Чтобы создать новый экземпляр класса:

p1 = Point(0, 0) # это вызовет метод

 

 

init в классе Point

 

 

 

 

 

 

 

 

 

 

print(p1)

# это вызовет метод

 

 

str

 

 

Point at [0.000000, 0.000000]

Чтобы вызвать метод класса в экземпляре класса p: p2 = Point(1, 1)

p1.translate(0.25, 1.5)

print(p1)

print(p2)

Point at [0.250000, 1.500000]

Point at [1.000000, 1.000000]

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

Это одна из приятных особенностей объектно-ориентированного дизайна: код, такой как функции и связанные с ними переменные, сгруппирован в отдельные и независимые сущности.

Модули

Одной из наиболее важных концепций хорошего программирования является повторное использование кода и избежание повторений.

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

Python поддерживает модульное программирование на разных уровнях. Функции и классы являются примерами инструментов низкоуровневого модульного программирования. Модули Python — это модульная конструкция программирования более высокого уровня, где мы можем собирать связанные переменные, функции и классы в модуле. Модуль Python определяется в файле Python (с расширением файла .py), и его можно сделать доступным для других модулей и программ Python с помощью оператора import.

Рассмотрим следующий пример: файл mymodule.py содержит простые примеры реализации переменной, функции и класса:

%%file mymodule.py

"""

Example of a python module. Contains a variable called my_variable, a function called my_function, and a class called MyClass.

"""

my_variable = 0

20

def my_function():

"""

Example function

"""

return my_variable

class MyClass:

"""

Example class.

"""

def init (self): self.variable = my_variable

def set_variable(self, new_value):

"""

Set self.variable to a new value

"""

self.variable = new_value

def get_variable(self): return self.variable

Writing mymodule.py

Мы можем импортировать модуль mymodule в нашу программу Python, используя import:

import mymodule

Используйте help(module), чтобы получить сводку о том, что предоставляет модуль: help(mymodule)

Help on module mymodule:

NAME mymodule

DESCRIPTION

Example of a python module. Contains a variable called my_variable, a function called my_function, and a class called MyClass.

CLASSES builtins.object

MyClass

class MyClass(builtins.object) | Example class.

|

| Methods defined here:

|

 

 

 

 

|

 

init (self)

 

 

 

 

 

|

Initialize self. See help(type(self)) for accurate signature.

|

 

 

 

 

|

get_variable(self)

|

 

 

 

 

21

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]