学习完本篇文章,您将掌握python以下知识点
1.变量...
2.控制流程:条件语句...
3.循环/迭代器...
4.清单:收藏| 数组| 数据结构...
5.词典:键值数据结构...
6.迭代:循环数据结构...
7.类和对象...
8.Python面向对象编程模式:ON..
9.封装:隐藏信息...
10.公共实例变量...
11.非公共实例变量...
12.公共方法...
13.非公开方法...
14.封装摘要...
15.继承:行为和特征...
学习Python:零基础到精通
首先,什么是Python?根据它的创建者Guido van Rossum,Python是:
“高级编程语言,其核心设计理念是代码可读性和语法,它允许程序员用几行代码表达概念。”
对我来说,学习Python的第一个原因因为他是一种优美的 编程语言。他可以在编写代码的同时很自然的表达我的想法。
另一个原因是我们可以通过运用Python在各种用途:数据科学,Web开发和机器学习都在这里发挥作用。Quora,Pinterest和Spotify都使用Python进行后端Web开发。让我们来了解一下。
1.变量
您可以将变量视为存储值。
在Python中,定义变量并为其设置值非常容易。想象一下,你想将1号存储在一个名为“one”的变量中。我们可以这样做:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
one=1
是不是很简单?您刚刚将值1赋给变量“one”。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
two = 2
some_number = 10000
您可以将任何其他值分配给您想要的任何其他变量。如上表所示,变量“ two”存储整数2,“ some_number ”存储10,000。
除了整数之外,我们还可以使用布尔值(True / False),字符串,float和许多其他数据类型。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
# booleans
true_boolean = True
false_boolean = False
# string
my_name = "youyongit"
# float
book_price = 15.80
2.控制流程:条件语句
“ If ”用来评估输入语句是True还是False。如果为True,则执行“if”语句中的内容。例如:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
If True:
Print (“Hello Python If”)
If 2>1:
Print (“2 is greater than 1”)
2大于1,因此执行“ print ”代码。
如果“ if ”表达式为false,则将执行“ else ”语句。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
If 1>2:
Print (“1 is greater than 2”)
else:
Print (“1 is not greater than 2”)
1不大于2,因此将执行“ else ”语句中的代码。
您还可以使用“ elif ”语句:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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中,我们可以以不同的形式进行迭代。这谈论:while 和for。
当循环时:当说法是正确的,该块中的代码会被执行。因此,此代码将打印从1到10的数字。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
num =1
while num <=10:
print (num)
num+=1
在同时循环需要一个“ 循环条件。“如果它保持为True,它会继续迭代。在这个例子中,当num
是11
在循环条件等于False
。
另一个基本的代码来更好地理解它:
该循环条件是True
如此它保持迭代-直到我们将其设置为False
。
对于循环:将变量“ num ”应用于块,“ for ”语句将为您迭代它。而使用while代码可以做到一样:从1到10。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
loop_condition = True
while loop_condition:
print("Loop Condition keeps: %s" %(loop_condition))
loop_condition = False
范围从第一个元素开始,1
直到第11
个元素(10
是第10
个元素)。
4.清单:收藏| 数组| 数据结构
想象一下,您希望将整数1存储在变量中。但也许你现在要存储2.和3,4,5 ......
我是否有另一种方法可以存储我想要的所有整数,而不是存储数百万个变量?确实存在另一种存储它们的方法。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
my_integers = [1, 2, 3, 4, 5]
List
是一个集合,可用于存储值列表(如您想要的这些整数)。所以让我们用它:
我们创建了一个数组并将其存储在my_integer上。
但也许你在问:“我如何从这个阵列中获取一个值?”
List
有一个叫做索引的概念。第一个元素获得索引0。第二个得到1,依此类推。
为了更清楚,我们可以用它的索引表示数组和每个元素。如图:
使用Python语法,也很容易理解:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
my_integers = [5, 7, 1, 3, 4]
print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4
想象一下,你不想存储整数。您只想存储字符串,例如亲戚姓名列表。看起来像这样:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
relatives_names = [
"Toshiaki",
"Juliana",
"Yuji",
"Bruno",
"Kaio"
]
print(relatives_names[4]) # Kaio
它的工作方式与整数相同。
我们刚学会了列表
如何运作。但我仍然需要向您展示如何向List
数据结构添加元素(。
添加新值的最常用方法是append
。让我们看看它是如何工作的:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
append
非常简单。您只需要将值(例如“ 有效工程师 ”)作为append
参数。
我们来谈谈另一种数据结构。
5.词典:键值数据结构
现在我们知道Lists
用整数编号索引。但是,如果我们不想使用整数作为索引呢?我们可以使用的一些数据结构是数字,字符串或其他类型的索引。
Dictionary
数据结构。Dictionary
是一组键值对。这是它的样子:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
dictionary_example = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
key是指向索引的value。我们如何获取Dictionary
内的value呢?用key。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
。我的名字,昵称和国籍。这些属性是Dictionary
的key。
当我们学会了如何使用索引访问List
,我们还可以使用索引(keys在Dictionary
)来访问存储在Dictionary的value
。
在这个例子中,我使用存储在字典中的所有值打印了一个关于我的短语。很简单吧?
另一个关于字典很酷的事情是我们可以使用任何东西作为value。在我创建的Dictionary
中,我想在其中添加key “年龄”和我的实际整数年龄:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
这里我们有一个key(年龄)value(24)对,使用字符串作为键,整数作为值。
正如我们所做的那样Lists
,让我们学习如何添加元素Dictionary
。value的key 是什么使我们学习Dictionary的
重要部分。当我们谈论向其添加元素时也是如此。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
dictionary_tk = {
"name": "Leandro",
"nickname": "Tk",
"nationality": "Brazilian"
}
dictionary_tk['age'] = 24
print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}
6.迭代:循环数据结构
List
迭代非常简单。我们Python
开发人员通常使用For
循环。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
bookshelf = [
"The Effective Engineer",
"The 4 hours work week",
"Zero to One",
"Lean Startup",
"Hooked"
]
for book in bookshelf:
print(book)
因此,对于书架中的每本书,我们(可以用它做任何事情)打印它。
对于哈希数据结构,我们也可以使用for
循环,但我们应用key
:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
dictionary = { "some_key": "some_value" }
for key in dictionary:
print("%s --> %s" %(key, dictionary[key]))
# some_key --> some_value
这是一个如何使用它的示例。对于每一个在dictionary中德key
,我们print
key
及其相应value
。
另一种方法是使用该iteritems
方法。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
dictionary = { "some_key": "some_value" }
for key, value in dictionary.items():
print("%s --> %s" %(key, value))
# some_key --> some_value
我们将两人的名字作为参数key
和value
,当然这不是必须的。我们可以为它们命名。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
dictionary_tk = {
"name": "Leandro",
"nickname": "Tk",
"nationality": "Brazilian",
"age": 24
}
for attribute, value in dictionary_tk.items():
print("My %s is %s" %(attribute, value))
我们可以看到我们使用属性作为Dictionary
key的
参数,并且它可以正常工作。
7.类和对象
一点理论:
对象是汽车,狗或自行车等现实世界物体的代表。对象共享两个主要特征:数据和行为。
汽车有数据,如车轮数量,车门数量和座位容量。它们还表现出行为:它们可以加速,停止,显示剩余多少燃料,以及许多其他东西。
我们在面向对象的编程中确定数据的属性和行为的方法。
数据→属性和行为→方法
而一个类是从中创建单个对象的模板。在现实世界中,我们经常发现许多具有相同类型的对象。比如汽车。都有品牌和型号(都有发动机,车轮,车门等)。每辆车都是使用相同的模板构建的,并且具有相同的组件。
8.Python面向对象编程模式:ON
Python作为面向对象的编程语言,具有以下概念:类和对象。
类是模板,是其对象的模型。
再说一次,类只是一个模型,或者是一种定义属性和行为的方法(正如我们在理论部分所讨论的那样)。作为示例,车辆类具有其自己的属性,其定义哪些对象是车辆。车轮的数量,油箱的类型,座位容量和最大速度都是车辆的属性。
考虑到这一点,看一下类的 Python语法:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Vehicle:
pass
我们用类声明定义类- 就是这样。
对象是类的实例。我们通过命名类来创建实例。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
car = Vehicle()
print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>
这里car
是Vehicle类的
一个对象。
请记住,我们的车辆类有四个属性:车轮数量,油箱类型,座位容量和最大速度。我们在创建车辆对象时设置所有这些属性。所以在这里,我们定义我们的类在它启动时接收数据:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
方法。我们称之为构造方法。因此,当我们创建车辆对象时,我们可以定义这些属性。想象一下,我们喜欢特斯拉模型S,我们想要创造这种对象。它有四个轮子,以电能运行,有五个座位的空间,最大速度为250公里/小时(155英里每小时)。让我们创建这个对象:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tesla_model_s = Vehicle(4, 'electric', 5, 250)
四轮+电动“坦克式”+五个座位+ 250km /小时最高速度。
所有属性都已设置。但是我们如何才能获得这些属性的价值呢?我们向对象发送消息询问他们。我们称之为方法。这是对象的行为。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
这是两种方法的实现:number_of_wheels和set_number_of_wheels。我们称之为getter
&setter
。因为第一个获取属性值,第二个为属性设置新值。
在Python中,我们可以使用@property
(decorators
)来定义getters
和setters
。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
我们可以使用这些方法作为属性:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
。这是编写pythonic
getter
和setter
编码的一种方法。
但我们也可以使用其他方法,比如“ make_noise ”方法。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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')
当我们调用此方法时,它只返回一个字符串“ VRRRRUUUUM。”
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM
9.封装:隐藏信息
封装是一种对对象数据和方法的直接访问的限制机制。与此同时,它有助于对数据(对象的方法)进行操作。
“封装可用于隐藏数据成员和成员的功能。在这个定义下,封装意味着对象的内部在对象定义之外的视图中隐藏。“ - 维基百科
对象的所有内部表示都是从外部隐藏的。只有对象可以与其内部数据进行交互。
首先,我们需要了解变量和方法的工作方式public
和non-public
实例。
10.公共实例变量
对于Python类,我们可以在构造函数方法中初始化public instance variable
。
在构造函数方法中:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Person:
def __init__(self, first_name):
self.first_name = first_name
这里我们将first_name
值作为参数应用于public instance variable
。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK')
print(tk.first_name) # => TK
在类中:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Person:
first_name = 'TK'
在这里,我们不需要将first_name
参数作为参数应用,并且所有实例对象都将class attribute
初始化为TK
。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person()
print(tk.first_name) # => TK
我们现在已经知道我们可以使用public instance variables
和class attributes
。关于该public
部分的另一个有趣的事情是我们可以管理变量值。object
可以管理其变量值:Get
和Set
变量值。
Person,
记住这个类,我们想要为它的first_name
变量设置另一个值:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK')
tk.first_name = 'Kaio'
print(tk.first_name) # => Kaio
我们只是为first_name
实例变量设置了另一个值kaio
并更新了值。由于它是一个public
变量,我们可以做到这一点。
11.非公共实例变量
我们在这里不使用术语“私有”,因为在Python中没有属性是真正私有的
作为public instance variable
,我们可以non-public instance variable
在构造函数方法或类中定义二者。语法差异是:for non-public instance variables
,_
在variable
名称前使用下划线(_)。
“在Python中不存在除对象内部之外无法访问的'私有'实例变量。但是,大多数Python代码都遵循一个约定:以下划线(例如_spam
)为前缀的名称应被视为API的非公共部分(无论是函数,方法还是数据成员)“ - Python软件基金会
这是一个例子:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Person:
def __init__(self, first_name, email):
self.first_name = first_name
self._email = email
你看到email
变量了吗?这就是我们定义的方式non-public variable
:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK', '[email protected]')
print(tk._email) # [email protected]
我们可以访问和更新它。Non-public variables
只是一个惯例,应该被视为API的非公开部分。
所以我们使用一种允许我们在类定义中完成它的方法。让我们实现两种方法(email
和update_email
)来理解它:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
现在我们可以使用这些方法更新和访问non-public variables
。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK', '[email protected]')
print(tk.email()) # => [email protected]
# tk._email = '[email protected]' -- treat as a non-public part of the class API
print(tk.email()) # => [email protected]
tk.update_email('[email protected]')
print(tk.email()) # => [email protected]
1. 我们用first_name
TK和email
[email protected] 发起了一个新对象
2. 通过访问non-public variable
方法打印电子邮件
3. 试图在类之外设立一个新的email
4. 我们需要将其non-public variable
视为non-public
API的一部分
5. 用我们的实例方法更新了non-public variable
6. 成功!我们可以使用helper方法在我们的类中更新它
12.公共方法
有了public methods
,我们也可以在类外使用它:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Person:
def __init__(self, first_name, age):
self.first_name = first_name
self._age = age
def show_age(self):
return self._age
我们来测试一下:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK', 25)
print(tk.show_age()) # => 25
13.非公开方法
但是non-public methods
我们无法做到。让我们使用相同的Person
类,但现在show_age
non-public method
使用下划线(_
)。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class Person:
def __init__(self, first_name, age):
self.first_name = first_name
self._age = age
def _show_age(self):
return self._age
现在,尝试non-public method,
用对象来调用它:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
tk = Person('TK', 25)
print(tk._show_age()) # => 25
我们可以访问和更新它。Non-public methods
只是一个惯例,应该被视为API的非公开部分。
示例:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
在这里,我们有一个_get_age
non-public method
和一个show_age
public method
。所述可以通过我们的对象使用(我们的类的)show_age
,并且仅在使用我们的类定义内(内show_age
法)可使用_get_age
。
14.封装摘要
通过封装,我们可以确保对象的内部表示,对外部隐藏。
15.继承:行为和特征
某些对象有一些共同点:它们的行为和特征。
例如,我从父亲那里继承了一些特征和行为。我继承了他的眼睛和头发作为特征,以及他作为行为的不耐烦和内向。
在面向对象的编程中,类可以从另一个类继承公共特征(数据)和行为(方法)。
让我们看看另一个例子,并在Python中实现它。
想象一辆车。车轮数量,座位容量和最大速度都是汽车的属性。我们可以说ElectricCar类从常规Car类继承了这些相同的属性。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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
我们的Car类实现了:
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
my_car = Car(4, 5, 250)
print(my_car.number_of_wheels)
print(my_car.seating_capacity)
print(my_car.maximum_velocity)
一旦启动,我们就可以使用所有instance variables
创建的。
在Python中,我们将从parent class
到child class
作为参数。一个ElectricCar类可以从我们的继承汽车类。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
class ElectricCar(Car):
def __init__(self, number_of_wheels, seating_capacity, maximum_velocity):
Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity)
。我们不需要实现任何其他方法,因为这个类已经有了它(继承自Car类)。
# 请在Python命令行、Pycharm、Jupyter里运行以下代码,Powered by www.youyongit.com
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循环(while&for)如何工作
· 如何使用列表:集合| 排列
· 字典键值集合
· 我们如何迭代这些数据结构
· 对象和类
· 属性作为对象的数据
· 方法作为对象的行为
· 使用Python getter和setter以及属性装饰器
· 封装:隐藏信息
· 继承:行为和特征
有用教育(上海荣隆教育科技有限公司)是一家专业培养资深IT工程师并让学员高薪就业、专注于Python开发、AI人工智能的教育机构,公司总部设立在上海,为IT人员提供到岗即用式的实战培训。
免费Python技术答疑QQ群 174240809
更多资源请关注微信公众号哦