Изучение Python самым быстрым, простым и эффективным способом
Я исхожу из C #, JavaScript, фона Node. А недавно у меня появилась возможность поработать над существующим проектом машинного обучения, написанным на Python, и с этого дня началось мое путешествие по изучению Python. Задача состояла в том, чтобы изучить концепции машинного обучения на новом языке. Учебник по Python для начинающих 2019 от Моша действительно помог мне понять Python и ML за 6 часов полного курса. Кроме того, я нашел пару хороших ссылок о моем путешествии по Python и ML, и вы можете перемещаться, как показано ниже:
Итак, потратив 2-3 дня, я вроде бы освоился с Python и ML, но когда дело дошло до написания кода, у меня возникли трудности из-за отсутствия практического опыта в Python. Итак, мой подход заключался в том, чтобы изучить язык, тщательно изучив основы и ключевые концепции языка, прежде чем глубоко погрузиться в популярные библиотеки, такие как numpy, pandas, sklearn, scipy, matplotlib и т. д.
Этот пост посвящается всем новичкам в Python и ML. Я создал репозиторий git для кода Python. Этот репозиторий проведет вас через пошаговый подход к изучению этого языка. Итак, просмотрите коды файл за файлом и попрактикуйтесь в написании, выполнении и анализе результата. Имя файла и его порядок важны, и мы рекомендуем вам следовать им. В большинстве мест я вставлял вывод рядом с выражением вместе с некоторыми ключевыми примечаниями/концепциями, где это возможно.
Код можно скачать с моего python-практика git-репозиторий. Я все еще работаю над этим репозиторием и буду обновлять его время от времени. Так что следите за обновлениями, если вам интересно.
Ниже приведены 2 примера того, что я имею в виду выше по порядку (первые 2 символа имени файла) и встроенные комментарии —
01_basics.py
# How to print
x=10
y=20
print(x+y) # 30
# You can't do like this. Below will return TypeError: must be str, not int
# print("Number is : " + 30)
# Change number to str as below.
print("Number is: " + str(30)) # Number is: 30
# By default its always printed in new line.
x=10
y=20
print(x+y) # 30
print(x*y) # 200
# In case you need to print in same line then use "end" as below
x=10
y=20
print(x+y, end=":")
print(x*y)
# 30:200
# Read input from User. Note the entered value is of type str. So ensure to cast it to int if you need to do some mathematical operation.
x = input("Enter number: ")
print(type(x)) # <class 'str'>
print(int(x)+ 100) # 110
# Handle User Input
try :
x = int(input("Enter number 1: ")) # enter 10
except ValueError:
x = 0
try :
y = int(input("Enter number 2: ")) # enter 20
except ValueError:
y = 0
print("sum: " + str(x+y)) # sum: 30
# A simple function
def sum(x,y):
return x+y
print(sum(5,2)) # 7
# Getting type of a value
f = 101;
print(type(f)) # <class 'int'>
# Global vs.local variables in functions
def someFunction():
global f
print(f)
f = "changing global variable"
someFunction()
print(f)
# Don’t use global keyword unless you know what you are doing. In case you need to retun multiple values return tuple as below -
# Recommended method
def profile():
name = "Danny"
age = 30
return name, age
profile_name, profile_age = profile()
print(profile_name) # Danny
print(profile_age) # 30
# Not recommended method
def profile():
global name, age
name = "Danny"
age = 30
profile()
print(name) # Danny
print(age) # 30
# use while loop to force user to enter correct number.
def ReadNumber():
loopCondition = True
while loopCondition:
try:
num = int(input("Enter number : "))
loopCondition = False
except ValueError:
loopCondition = True
return num
x = ReadNumber()
y = ReadNumber()
print(x+y)
03_dist.py
# dict example
a = {'apple': 'fruit', 'beetroot': 'vegetable', 'cake': 'dessert'}
a['doughnut'] = 'snack'
print(a)
dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# Put all keys of `dict1` in a list and returns the list
k = dict1.keys()
print(type(k))
v = dict1.values()
print(v)
# Best way to understand what is available with the type is use 'dir'.
print(dir(dict1))
# ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
# '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__',
# '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__',
# '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem',
# 'setdefault', 'update', 'values']
# Let's use few
dict1 = {'a': 100, 'b': 200, 'c': 300, 'd': 400}
print(str(dict1)) # {'a': 100, 'b': 200, 'c': 300, 'd': 400}
print(len(dict1)) # 4
for x in iter(dict1):
print(x, end = ":") # a:b:c:d:
print("\n")
p1 = dict1.popitem()
print(len(dict1)) # 3
print(p1) # ('d', 400)
print(type(p1)) # <class 'tuple'>
dict2 = dict1.copy()
p1 = dict1.popitem()
print(len(dict1)) # 2
print(len(dict2)) # 3
Отказ от ответственности: поскольку мы находимся на этапе обучения, совершенно нормально добавить некоторые примечания о том, что делает код. Но в вашем реальном проекте никогда не пытайтесь добавлять комментарии к тому, что делает код, вместо этого вы должны понять, почему вы пишете блок кода.