1)Области видимости
Пример области видимости функций и переменных:def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): nonlocal spam spam = "nonlocal spam" def do_global(): global spam spam = "global spam" spam = "test spam" do_local() print("After local assignment:", spam) do_nonlocal() print("After nonlocal assignment:", spam) do_global() print("After global assignment:", spam) scope_test() print("In global scope:", spam) #The output of the example code is: """ After local assignment: test spam After nonlocal assignment: nonlocal spam After global assignment: nonlocal spam In global scope: global spam """
В данном примере:
- local assignment - не изменяет переменную spam в области видимости метода scope_test
- nonlocal assignment - изменяет переменную spam в области видимости метода scope_test
- global assignment - изменяет переменную spam в области видимости модуля
2)Определение классы
Пример формы задания класса:class ClassName: #statement-1 #. #. #. #statement-N
2.2)Объект класса
Пример создания класса и инициализации объекта:class Complex: """A simple example class""" i = 12345 #метод, вызываемый при инициализации класса def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart def f(self): return 'hello world' x = Complex(3.0, -4.5) x.r, x.i
2.2)Переменные класса и переменные объекта
Переменные класса общие для всех последующих объектов, образованных их этого класса вдальнейшем:class Dog: # переменная класса, распространяется на все объекты kind = 'canine' def __init__(self, name): # переменная объекта, уникальна для каждого объекта self.name = name # >>> d = Dog('Fido') # >>> e = Dog('Buddy') # >>> d.kind # shared by all dogs # 'canine' # >>> e.kind # shared by all dogs # 'canine' # >>> d.name # unique to d # 'Fido' # >>> e.name # unique to e # 'Buddy'
3)Итераторы и генераторы
1 - Пример класса итератораclass Reverse: """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index] #пример использования # >>> rev = Reverse('spam') # >>> iter(rev) # <__main__.Reverse object at 0x00A1DB50> # >>> for char in rev: # ... print(char) # ... # m # a # p # s
def reverse(data): for index in range(len(data)-1, -1, -1): yield data[index] #пример использования # >>> for char in reverse('golf'): # ... print(char) # ... # f # l # o # g
# sum of squares sum(i*i for i in range(10)) # 285 xvec = [10, 20, 30] yvec = [7, 5, 3] # dot product sum(x*y for x,y in zip(xvec, yvec)) # 260 from math import pi, sin sine_table = {x: sin(x*pi/180) for x in range(0, 91)} unique_words = set(word for line in page for word in line.split()) valedictorian = max((student.gpa, student.name) for student in graduates) data = 'golf' list(data[i] for i in range(len(data)-1, -1, -1)) # ['f', 'l', 'o', 'g']
Комментарии 0
Пока нет комментариев. Станьте первым!