Рубрики
Без рубрики

Обучение Python: от нуля до героя

Автор оригинала: TK.

Прежде всего, что такое Python? По словам его создателя, Guido Van Rossum, Python – это:

Для меня первая причина учиться Python была то, что это, на самом деле, красивая язык программирования. Это было действительно естественно, чтобы кодировать в нем и выразить свои мысли.

Другая причина заключалась в том, что мы можем использовать кодирование в Python с несколькими способами: наука о данных, веб-разработке и машине, изучая все сияние здесь. Квора, Pinterest и Spotify все используют Python для их Backend Web Development. Так что давайте узнаем немного об этом.

Основы

1. Переменные

Вы можете подумать о переменных как слова, которые хранят значение. Просто как тот.

В Python очень легко определить переменную и установить его значение. Представьте, что вы хотите сохранить номер 1 в переменной под названием «One». Давай сделаем это:

one = 1

Насколько это было просто? Вы только что присваивали значение 1 к переменной «один».

two = 2
some_number = 10000

И вы можете назначить любой другой ценность к другому другому Переменные ты хочешь. Как вы видите в таблице выше, переменная « два » хранит целое число 2 и ” quote_number ” Магазины 10 000 Отказ

Помимо целых чисел, мы также можем использовать логические значения (True/False), строки, плавать и многие другие типы данных.

# booleans
true_boolean = True
false_boolean = False

# string
my_name = "Leandro Tk"

# float
book_price = 15.80

2. Поток управления: условные заявления

« Если » использует выражение для оценки того, является ли оператор TRUE или FALSE. Если это правда, он выполняет то, что находится внутри оператора «если». Например:

if True:
  print("Hello Python If")

if 2 > 1:
  print("2 is greater than 1")

2 больше чем 1 Таким образом, код « Print » выполнен.

Заявление « else » будет выполнено, если выражение « если » является ложь Отказ

if 1 > 2:
  print("1 is greater than 2")
else:
  print("1 is not greater than 2")

1 не больше чем 2 Так что код внутри « else » будет выполнен.

Вы также можете использовать заявление « ELIF »:

if 1 > 2:
  print("1 is greater than 2")
elif 2 > 1:
  print("1 is not greater than 2")
else:
  print("1 is equal to 2")

3. Структура/итератор

В Python мы можем итерации в разных формах. Я расскажу о двух: в то время как и для Отказ

В то время как Структура: Хотя утверждение верно, код внутри блока будет выполнен. Итак, этот код будет распечатать номер из 1 к 10 Отказ

num = 1

while num <= 10:
    print(num)
    num += 1

в то время как Структура нуждается в состоянии « условие петли. », если он остается правдой, он продолжает итерацию. В этом примере, когда Num это 11 Условие петли равен Ложь Отказ

Еще один базовый бит кода, чтобы лучше понять это:

loop_condition = True

while loop_condition:
    print("Loop Condition keeps: %s" %(loop_condition))
    loop_condition = False

Условие петли это Правда Так что он держит итерацию – пока мы не установим его на Ложь Отказ

Для петли : Вы применяете переменную « NUM » в блок, а « для » утверждают это для вас. Этот код будет напечатан так же, как в то время как код: из 1 к 10 Отказ

for i in range(1, 11):
  print(i)

Видеть? Это так просто. Диапазон начинается с 1 и идет до 11 Th Element ( 10 – это элемент 10 th).

Список: коллекция | Массив |. Структура данных

Представьте, что вы хотите хранить целое число 1 в переменной. Но, может быть, теперь вы хотите хранить 2. и 3, 4, 5 …

У меня есть еще один способ хранить все целые числа, которые я хочу, но не в Миллионы переменных ? Вы догадались – действительно еще один способ хранить их.

Список это коллекция, которая может использоваться для хранения списка значений (например, эти целые числа, которые вы хотите). Так что давайте будем использовать это:

my_integers = [1, 2, 3, 4, 5]

Это действительно просто. Мы создали массив и сохранили его на my_integer Отказ

Но, может быть, вы спрашиваете: «Как я могу получить значение из этого массива?»

Отличный вопрос. Список Имеет концепцию под названием индекс Отказ Первый элемент получает индекс 0 (ноль). Второй получает 1, и так далее. Вы получаете идею.

Чтобы сделать его более понятнее, мы можем представлять массив и каждый элемент с его индексом. Я могу нарисовать это:

Используя синтаксис Python, также просто понять:

my_integers = [5, 7, 1, 3, 4]
print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4

Представьте, что вы не хотите хранить целые числа. Вы просто хотите хранить строки, как список имен ваших родственников. Мой будет выглядеть что-то подобное:

relatives_names = [
  "Toshiaki",
  "Juliana",
  "Yuji",
  "Bruno",
  "Kaio"
]

print(relatives_names[4]) # Kaio

Работает так же, как целые числа. Хороший.

Мы только что узнали, как Списки Индексы работают. Но мне все еще нужно показать вам, как мы можем добавить элемент для Список Структура данных (пункт в список).

Наиболее распространенный метод добавления нового значения для Список это Добавить Отказ Посмотрим, как это работает:

bookshelf = []
bookshelf.append("The Effective Engineer")
bookshelf.append("The 4 Hour Work Week")
print(bookshelf[0]) # The Effective Engineer
print(bookshelf[1]) # The 4 Hour Work Week

Добавить супер простой. Вам просто нужно применить элемент (например, » Эффективный инженер “) как Добавить параметр.

Ну, достаточно о Списки Отказ Давайте поговорим о другой структуре данных.

Словарь: Структура данных о значении ключей

Теперь мы знаем, что Списки индексируются с целочисленными номерами. Но что, если мы не хотим использовать целочисленные номера в качестве показателей? Некоторые структуры данных, которые мы можем использовать, являются числовыми, строчными или другими типами индексов.

Давайте узнаем о Словарь структура данных. Словарь это коллекция пар клавишных ценностей. Вот что похоже:

dictionary_example = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

ключ Является ли индекс, указывающий на ценность Отказ Как добраться до Словарь ценность ? Вы догадались, используя ключ Отказ Давай попробуем:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %s" %(dictionary_tk["nationality"])) # And by the way I'm Brazilian

Я создал Словарь обо мне. Мое имя, прозвище и национальность. Эти атрибуты являются Словарь Ключи Отказ

Как мы узнали, как получить доступ к Список Используя индекс, мы также используем индексы ( ключевые ключи в словаре Словарь контекст) для доступа к ценность хранится в Словарь Отказ

В этом примере я напечатал фразу вокруг меня, используя все значения, хранящиеся в Словарь Отказ Довольно просто, верно?

Еще одна прохладная вещь о Словарь Это то, что мы можем использовать все, что и значение. В Словарь Я создал, я хочу добавить ключ «Возраст» и мой настоящий целочисленный возраст в этом:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %i and %s" %(dictionary_tk["age"], dictionary_tk["nationality"])) # And by the way I'm Brazilian

Здесь у нас есть ключ (возраст) ценность (24) Пара, используя строку как ключ и целое число как ценность Отказ

Как мы сделали с Списки Давайте узнаем, как добавлять элементы на Словарь Отказ ключ указывая на ценность это большая часть того, что Словарь является. Это также верно, когда мы говорим о добавлении элементов к нему:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

dictionary_tk['age'] = 24

print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}

Нам просто нужно назначить ценность к Словарь ключ Отказ Здесь ничего не сложно, верно?

Итерация: зацикливание по структурам данных

Как мы узнали в Основы Python , Список Итерация очень проста. Мы Python Разработчики обычно используют Для цикл. Давай сделаем это:

bookshelf = [
  "The Effective Engineer",
  "The 4-hour Workweek",
  "Zero to One",
  "Lean Startup",
  "Hooked"
]

for book in bookshelf:
    print(book)

Таким образом, для каждой книги на книжной полке мы ( Можем все с ним делать ) Распечатайте его. Довольно простые и интуитивно понятные. Это питон.

Для структуры хеш-данных мы также можем использовать для петля, но мы применяем ключ :

dictionary = { "some_key": "some_value" }

for key in dictionary:
    print("%s --> %s" %(key, dictionary[key]))
    
# some_key --> some_value

Это пример, как его использовать. Для каждого ключ В Словарь Мы Печать ключ и его соответствующие ценность Отказ

Еще один способ сделать это – использовать Iteritems метод.

dictionary = { "some_key": "some_value" }

for key, value in dictionary.items():
    print("%s --> %s" %(key, value))

# some_key --> some_value

Мы назвали два параметра как ключ и ценность , но это не нужно. Мы можем назвать их что-нибудь. Давай увидим это:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

for attribute, value in dictionary_tk.items():
    print("My %s is %s" %(attribute, value))
    
# My name is Leandro
# My nickname is Tk
# My nationality is Brazilian
# My age is 24

Мы можем видеть, что мы использовали атрибут в качестве параметра для Словарь ключ и это работает должным образом. Большой!

Классы и объекты

Немного теории:

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

Автомобили имеют данные, Как количество колес, количество дверей и сидения, они также выставляют поведение : Они могут ускорить, остановить, показать, сколько топлива осталось, и так много других вещей.

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

Данные → Атрибуты и поведение → Методы

И а Класс Является ли план, из которого создаются отдельные объекты. В реальном мире мы часто находим много объектов с тем же типом. Как автомобили. Все таки делают и модель (и у всех есть двигатель, колеса, двери и т. Д.). Каждый автомобиль был построен из того же набора чертежей и имеет те же компоненты.

Режим программирования объектно-ориентированного на Python: ON

Python, как объектно-ориентированный язык программирования, имеет эти концепции: Класс и объект Отказ

Класс – это план, модель для его объектов.

Так что опять же класс это просто модель или способ определить атрибуты и поведение (Как мы говорили в разделе теории). В качестве примера автомобиль Класс имеет свой атрибуты которые определяют, что Объекты это транспортные средства. Количество колес, тип резервуара, сидения и максимальная скорость – это все атрибуты автомобиля.

С этим в виду, давайте посмотрим на синтаксис Python для Классы :

class Vehicle:
    pass

Мы определяем классы с классное утверждение – вот и все. Легко, не так ли?

Объекты Есть случаи A Класс Отказ Мы создаем экземпляр, назвав класс.

car = Vehicle()
print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>

Здесь Автомобиль это объект (или экземпляр) Класс Автомобиль Отказ

Помните, что наше транспортное средство Класс имеет четыре атрибуты : Количество колес, тип резервуара, сидения и максимальная скорость. Мы устанавливаем все эти атрибуты При создании автомобиля объект Отказ Итак, мы определяем нашу Класс Получать данные, когда он инициирует это:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

Мы используем init Метод Отказ Мы называем это методом конструктора. Итак, когда мы создаем автомобиль объект мы можем определить эти атрибуты Отказ Представь, что мы любим Tesla Model S, И мы хотим создать этот вид объект Отказ Имеет четыре колеса, бегит на электрической энергии, имеет место на пять мест, а максимальная скорость составляет 250 км/час (155 миль в час). Давайте создадим это объект:

tesla_model_s = Vehicle(4, 'electric', 5, 250)

Четыре колеса + электрические «тип резервуара» + пять мест + 250 км/час максимальной скорости.

Все атрибуты устанавливаются. Но как мы можем получить доступ к значениям этих атрибутов? Мы Отправьте сообщение объекту, спрашивающему о них Отказ Мы называем это Метод Отказ Это Поведение объекта Отказ Давайте реализуем это:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def number_of_wheels(self):
        return self.number_of_wheels

    def set_number_of_wheels(self, number):
        self.number_of_wheels = number

Это реализация двух методов: number_of_wheels и set_number_of_wheels Отказ Мы называем это Добрать & Сеттер Отказ Поскольку первое получает значение атрибута, а второе устанавливает новое значение для атрибута.

В Python мы можем сделать это, используя @Property ( Декораторы ) определить Геттерс и Соседниты Отказ Давайте увидимся с кодом:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity
    
    @property
    def number_of_wheels(self):
        return self.__number_of_wheels
    
    @number_of_wheels.setter
    def number_of_wheels(self, number):
        self.__number_of_wheels = number

И мы можем использовать эти методы в качестве атрибутов:

tesla_model_s = Vehicle(4, 'electric', 5, 250)
print(tesla_model_s.number_of_wheels) # 4
tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2
print(tesla_model_s.number_of_wheels) # 2

Это немного отличается от определения методов. Методы работают как атрибуты. Например, когда мы устанавливаем новое количество колес, мы не применяем два в качестве параметра, но установите значение 2 на number_of_wheels Отказ Это один из способов написать Питон Добрать и Сеттер код.

Но мы также можем использовать методы для других вещей, таких как метод « make_noise ». Давай увидим это:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def make_noise(self):
        print('VRUUUUUUUM')

Когда мы называем этот метод, он просто возвращает строку vrrrruruuum.

tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM

Инкапсуляция: скрывая информация

Инкапсуляция – это механизм, который ограничивает прямой доступ к данным и методам объектов. Но в то же время он облегчает работу в этих данных («объекты»).

Все внутреннее представление объекта скрыто снаружи. Только объект может взаимодействовать со своими внутренними данными.

Во-первых, нам нужно понять, как публичный и непубличный Переменные и методы экземпляра работают.

Переменные публичных экземпляров

Для класса Python мы можем инициализировать Открытый экземпляр переменной в пределах нашего метода конструктора. Посмотрим это:

В рамках метода конструктора:

class Person:
    def __init__(self, first_name):
        self.first_name = first_name

Здесь мы применяем first_name значение как аргумент для Открытый экземпляр переменной Отказ

tk = Person('TK')
print(tk.first_name) # => TK

В классе:

class Person:
    first_name = 'TK'

Здесь нам не нужно применять first_name Как аргумент, и все объекты экземпляра будут иметь Атрибут класса инициализирован с TK Отказ

tk = Person()
print(tk.first_name) # => TK

Прохладный. Теперь мы узнали, что мы можем использовать Переменные публичных экземпляров и Атрибуты класса Отказ Еще одна интересная вещь о публичный Часть заключается в том, что мы можем управлять значением переменной. Что я имею в виду под этим? Наше объект Можно управлять его вариантом: Получить и Установить Вариабельные значения.

Держать Человек в виду класс, мы хотим установить еще одно значение для его first_name Переменная:

tk = Person('TK')
tk.first_name = 'Kaio'
print(tk.first_name) # => Kaio

Там мы идем. Мы просто устанавливаем другое значение ( Kaio ) к first_name Переменная экземпляра и обновлена значение. Просто как тот. Так как это публичный Переменная, мы можем сделать это.

Непубличная переменная экземпляра

Как Открытый экземпляр переменной мы можем определить Нет публичной переменной экземпляра как внутри метода конструктора или в классе. Разница синтаксиса: для Переменные непублики непублики Используйте подчеркивание ( _ ) до Переменная название.

Вот пример:

class Person:
    def __init__(self, first_name, email):
        self.first_name = first_name
        self._email = email

Вы видели Email Переменная? Вот как мы определяем непубличная переменная :

tk = Person('TK', 'tk@mail.com')
print(tk._email) # tk@mail.com

Таким образом, мы используем метод, который позволяет нам делать это внутри нашего определения класса. Давайте реализуем два метода ( Email и update_email ) Чтобы понять это:

class Person:
    def __init__(self, first_name, email):
        self.first_name = first_name
        self._email = email

    def update_email(self, new_email):
        self._email = new_email

    def email(self):
        return self._email

Теперь мы можем обновить и получить доступ к непубличные переменные используя эти методы. Посмотрим:

tk = Person('TK', 'tk@mail.com')
print(tk.email()) # => tk@mail.com
# tk._email = 'new_tk@mail.com' -- treat as a non-public part of the class API
print(tk.email()) # => tk@mail.com
tk.update_email('new_tk@mail.com')
print(tk.email()) # => new_tk@mail.com
  1. Мы начали новый объект с first_name TK и Email tk@mail.com.
  2. Напечатали электронную почту, доступа к непубличная переменная с методом
  3. Пытался установить новый Email из нашего класса
  4. Нам нужно лечить непубличная переменная как непубличный часть API
  5. Обновлено непубличная переменная С нашим методом экземпляра
  6. Успех! Мы можем обновить его внутри нашего класса с помощью метода помощника

Общественный метод

С Общественные методы , мы также можем использовать их из нашего класса:

class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def show_age(self):
        return self._age

Давайте тестируем это:

tk = Person('TK', 25)
print(tk.show_age()) # => 25

Отлично – мы можем использовать его без проблем.

Непубличный метод

Но с Непубличные методы Мы не можем это сделать. Давайте реализовать то же самое Человек класс, но теперь с show_age Непубличный метод Использование подчеркивания ( _ ).

class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def _show_age(self):
        return self._age

И теперь мы постараемся назвать это Непубличный метод С нашим объектом:

tk = Person('TK', 25)
print(tk._show_age()) # => 25

Вот пример того, как мы можем использовать это:

class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def show_age(self):
        return self._get_age()

    def _get_age(self):
        return self._age

tk = Person('TK', 25)
print(tk.show_age()) # => 25

Здесь у нас есть _get_age Непубличный метод и а show_age Общественный метод Отказ show_age Может использоваться нашим объектом (из нашего класса) и _get_age Используется только внутри нашего определения класса (внутри Show_age Метод). Но опять же: как вопрос Конвенции.

Сводка инкапсуляции

С помощью инкапсуляции мы можем гарантировать, что внутреннее представление объекта скрыто снаружи.

Наследование: поведение и характеристики

Некоторые объекты имеют некоторые вещи общего: их поведение и характеристики.

Например, я унаследовал некоторые характеристики и поведение от моего отца. Я унаследовал глаза и волосы как характеристики, и его нетерпение и интроверсию как поведение.

В объектно-ориентированном программировании классы могут наследовать общие характеристики (данные) и поведение (методы) из другого класса.

Давайте посмотрим другой пример и внедрим его в Python.

Представьте себе машину. Количество колес, сидения и максимальная скорость – все атрибуты автомобиля. Мы можем сказать, что Электрический экран Класс наследует эти же атрибуты из обычного Автомобиль класс.

class Car:
    def __init__(self, number_of_wheels, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

Наше Автомобиль Класс реализован:

my_car = Car(4, 5, 250)
print(my_car.number_of_wheels)
print(my_car.seating_capacity)
print(my_car.maximum_velocity)

После инициированного, мы можем использовать все Переменные экземпляра созданный. Хороший.

В Python мы применяем родительский класс к Детский класс как параметр. Электрический экран Класс может наследовать от наших Автомобиль класс.

class ElectricCar(Car):
    def __init__(self, number_of_wheels, seating_capacity, maximum_velocity):
        Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity)

Просто как тот. Нам не нужно реализовывать какой-либо другой метод, потому что этот класс уже имеет его (унаследовано от Car класс). Давайте докажем это:

my_electric_car = ElectricCar(4, 5, 250)
print(my_electric_car.number_of_wheels) # => 4
print(my_electric_car.seating_capacity) # => 5
print(my_electric_car.maximum_velocity) # => 250

Красивый.

Это оно!

Мы узнали много вещей о основах Python:

  • Как работают переменные Python
  • Как работают условные заявления Python
  • Как работает Python (Woman & for) работает
  • Как использовать списки: коллекция | Множество
  • Словарь Ключ-Значение Коллекция
  • Как мы можем проиграть через эти структуры данных
  • Объекты и классы
  • Атрибуты как данные объектов
  • Методы как поведение объектов
  • Использование Python Getter и Getters & Property Decorator
  • Инкапсуляция: скрывая информация
  • Наследование: поведение и характеристики

Поздравляю! Вы завершили эту густую часть содержания о Python.

Если вы хотите полный курс Python, узнаете больше навыков кодирования в реальном мире и строить проекты, попробуйте Один месяц Python Bootcamp Отказ Увидимся там ☺

Для получения дополнительных историй и постов о моем путешествии, обучении и овладении программирования, следуйте за моим публикацией Разработчик Renaissance Отказ

Веселитесь, продолжайте учиться и всегда держать кодирование.

Мой Twitter & Github Отказ ☺.