从零开始学Python,一篇文章搞定
Python是什么?
它的构建者Guido van Rossum说:
“high-level programming language, and its core design philosophy is all about code readability and a syntax which allows programmers to express concepts in a few lines of code.”
翻译过来就是:“Python是一种高级编程语言,核心设计思想在于代码的易读性,方便程序员只需几行代码来表达概念含义”
如今Python是数据科学,机器学习,深度学习或者网络编程的主流编程语言,也是一个美丽的编程语言,所以我们来很快的学习一下。如果你有一点编程基础,那接下来的内容会让你瞬间了解Python的全貌。
基础
- 变量variables
简单来讲,变量就是一个值。
在Python里,很容易定义一个变量并赋予它一个值,比如:
定义一个变量one,并给它赋值为1.
好了,下面你就可以照猫画虎了,比如我们可以定义以下变量:
变量two等于2, some_number等于10000
变量可以有不同的类型,比如布尔变量,字符串,浮点数等:
- 控制流,条件语句Control Flow: conditional statements
if语句通过紧跟它的表达式的真伪来判断应该执行什么语句,比如:
如果2大于1,就打印
2 is greater than 1.
加else,相当于if后面的表达式不成立,我们就执行else,比如:
1肯定比2小,所以,我们会执行else后面的语句打印
1 is not greater than 2
还可以加elif,说明不止一种条件了,比如:
- 循环Looping/iterator
Python里的循环有两种方式:While或者for
while循环,如果while紧跟的条件表达式为true,就会循环执行直到条件表达式为false。比如:
当num小于等于10时,都会执行打印,直到num等于11结束循环。
for循环,会有一个固定的变量区间来循环,比如:
我们通过for循环实现了以上while循环一样的结果。简单。
列表:集合 | 阵列 | 数据结构List: Collection | Array | Data Structure
通过以上学习我们知道变量只能存储一个值,如果我们需要存储很多值,比如上百万个,我们除了去定义上百万个变量这种方法以外,我们还可以使用列:
列表List是一种集合能用于储存一列值,比如:
你的问题来了,那么怎么获得其中任何一个值呢,我们想象索引的概念,我们从0开始编序,意思就是第0个值等于1,第一个值等于2,以此类推,在Python里面我们这样获取:
如果你其实是要把想吃的水果存起来,比如:
现在你知道定义一个列,并怎么提取某一个值,你的问题又来了,我要增加一个怎么加?
我们通常使用append来增加,超级简单,比如:
字典:键值数据结构
Dictionary: Key_Value Data Structure
有些情况你无法单纯的使用数字作为索引时,我们来看看字典结构,比如:
可以看到,字典结构可以由key1,key2,key3作为索引,每一个对应一个Value来配对出现,想象一下我们怎么来获取每一对值呢?
我们先来给大熊猫创建一个字典,比如:
这里name,color,gender,age构成了字典结构里的keys,而与其配对的yuanyuan,blackwhite,male,2构成了字典结构里的values。
你的问题又来了,我们怎么给熊猫字典里增加一个他的伴侣名字呢? 很简单,直接加:
迭代:基于数据结构的循环 iteration:Looping through Data structure
比如上面我们要打印所有我喜欢的水果,我们可以使用循环for:
要打印熊猫字典,我们也可以使用for循环:
或者你可以使用key,value:
这里要说明一点是,并不是非要使用key这个名字,你可以使用其他任何,比如我们使用attr,同样有效:
类和对象Class & Object
来点理论先:
对象Object就是现实世界里的对象,比如车,房子,公园,猫,狗等等,对象具有两个基本特诊:数据Data和行为Behavior。
车子的数据可以是轮子数,车门数,几人座等等,行为可以是启动,停车,加油,显示油量等等。
在基于对象的编程环境里,我们把数据Data视为属性Attributes,而把行为Behavior视为方法Methods,一个类可以看作为一个对象的抽象,一个对象就是一个类的实例,比如所有的车都具有同样的类,雪佛兰,福特是车这个类的两个实例。
下面我们来具体看看Python中如何来表示, 我们定义一个类car:
下面我们定义一个对象,比如福特车:
ford就是car这个类的一个实例,前面我们讲了这个类的属性,我们来写出来:
这里init就是一个方法,它是一个构造方法,下面我们就来实例化我们的福特车:
4个轮子,汽油引擎,4座,最大速度140迈。
我们需要继续定义方法,以便我们可以获取对象中的某一个属性,这就是对象的一个行为,比如:
number_of_wheels获取轮子数, set_number_of_wheels用于设置轮子数。
在Python中,我们也可以使用@property来定义获取和设置:
我们来使用一下他们,在对象ford里:
多简单,可以获取轮子数,然后我们又可以修改为2个。
聪明的你估计已经发现了些微的差别,当我们修改轮子数时,2并不是一个参数,而是直接赋值了,这是一种写pythonic的setter和getter代码的方法。
封装:隐藏信息 Encapsulation: Hiding Information
顾名思义,就是限制对于一个对象中数据和方法的直接访问,换句话讲,就是一个对象中的所有的内在表现方式,比如方法,数据,都被隐藏,不被外部所见。
让我们来理解一下public和non-public实例变量和方法的区别:
公共实例变量Public Instance variables
我们能够在一个Python类的构造方法里初始化一个公共实例变量,比如:
first_name是一个公共实例变量,
如果我们是在一个类里定义,比如:
那么我们就不需要上面那样去赋值,因为所有的类对象实例都会被初始化:
好了,你已经了解了简单的公共实例变量,和类属性,公共实例变量是可以被修改的,这是它的特点,注意,比如:
非公共实例变量Non-public Instance Variable
顾名思义,这些就是定义在类中,无法从外部直接进行修改或者获取的变量,一般会有一个下划线作为头部:
注意看_email, 这就是一个非公共实例变量,我们同样可以定义和使用:
也可以通过方法来进行:
还是刚才的例子,我们增加注释便于大家看清楚差别,了解非公共实例变量的使用和限制:
公共方法Public Method
同理,公共方法的意思就是我们可以在类外直接使用,比如:
测试一下,
私有方法non-Public Method
同非公共实例变量一样,头部使用下划线_, 同样的属性,我们定义私有方法如下:
在对象中调用这个私有方法:
私有方法不能通过对象名直接调用,只能在实例方法中通过 self 调用或者外部通过 python 支持的特殊方法来调用。
Python 中,函数和方法是有区别的。方法一般指特定实例绑定的函数,通过对象调用方法时,对象本身将被作为第一个参数传递过去,普通函数没有此特点。
继承:行为和特征 Inheritance:behavior and character
继承的意思就是对象是可以继承父对象的方法和属性的,就好比儿子继承了父亲的大眼睛,塌鼻子,身高出众等等特征,同时也继承了父亲的坏脾气,内向这样的行为。
在面向对象的编程中,一个类可以继承另一个类的方法和数据,比如,我们回到上面那个车的类,我们定义一个电动车electric_car的新类,它可以继承车的类car:
对于这个新类,我们并不需要定义父类已有的方法,而是直接使用就行:
总结一下
- Python的变量如何工作
- Python的条件语句
- Python的循环语句
- 怎么使用列
- 字典键值集合
- 数据结构里的循环操作
- 对象和类
- 对象属性
- 对象行为方法
- Python的getters,setters以及@property
- 封装隐藏信息
- 继承行为和特征
当你对于Python有了一个笼统但相对基本的认知后,你就会根据自己的需求有选择的就某个知识点进行深入再学习和巩固,于是顺利的开进无论读别人代码或者自己写代码的优美旅程中。