01
—
前言
Python编程语言由于其强大的数学计算能力和类库已经成为大数据、机器学习和人工智能的首选编程语言。
对有Java、JavaScript、C、C++、PHP等基础的程序员,通过快速了解语法即可进入可编程状态。
对首次学习编程语言的人,带着如下几点思考要素也可以清晰地开始Python编程:
任何编程语言都有其基本的语法;
任何编程语言都有其基本的数据类型;
任何编程语言都有其基本的代码组织方式;
任何编程语言一旦支持OOP,其基本的逻辑都是一致的。
对小朋友(6-13岁),可与人类语言学习类比,去理解“机器语言“:
人类语言主要解决人与人之间的交流;“机器语言“主要解决人与计算机之间的交流;人类语言在特定范围可以被机器理解,即人机语言一致;
人类语言有语法,“机器语言“也有语法;
人类语言系统的产物有书籍、音乐等,“机器语言”同样以程序来完成人与机器系统地沟通;
语言(包括人类语言与“机器语言”)的目的不外乎陈述与指令,陈述主要表达“是什么(What)”,指令主要表达“如何做(How)”;
语言(包括人类语言与“机器语言”)介于逻辑与形象之间,具有输入->逻辑->表达的基本规律。
02
—
基本语法
2.1 变量
Python的变量只是一个对象引用的标识,其并未携带任何类型信息。所以Python中变量不存在提前申明,也就是必须要初始化或赋值,如:
#这种写法是没有意义的,编译也不会通过
a
#这种写法才正确
a = 3
在申明时必须赋值区别于其它语言,通过提前申明来定义变量的作用域在Python赋值运算中是不可行的,这也对Python的变量作用域提出来另外的定义需求,具体请参考函数部分的作用域,无论怎么样,Python变量只是一个对象引用的名字,除此之外没有任何信息携带,其更多的信息是由赋值给它的对象决定的。
2.2 语句与代码块
Python按照行与缩进来组织代码块,相同缩进(在代码中应该整体采用tab或空格,请不要混合使用)的代码会被认为在同一块下,如:
a = 1
b = True
c = 0
if a:
print(a)
if b:
print(b)
if c:
print(c)
输出结果为:
a
True
一行写不下可以通过符号 \ 标注并换行。
2.3 比较与运算
2.3.1 真值检测
在Python中任何非0或者非空(None)的对象,都真;Python中True和False其实1和0的特殊版本;None是一个特殊的对象,表示空对象。
2.3.2 布尔运算
Python中有三种布尔运算,分别为or/and/not,其运算条目间符合真值检测规则。
2.3.3 比较运算
Python中判断值相等用==;判断对象是否相等用is;
2.4 控制语句
2.4.1 选择语句
a = True
b = 'b1' if a else 'b2'
结果:
b = 'b1'
2.4.2 条件语句
if condition:
语句
if condition:
语句
else:
语句
if condition:
语句
elif condition:
语句
2.4.3 循环语句
while 条件:
语句
if 条件:
break
if 条件:
continue
else:
while条件满足跳出时执行这里的语句
Python中while循环的else区别于其它语言,通常用于确认循环在给定的条件内是否全部覆盖与完成,这样可以避免再加入标志变量来判断遍历跳出类型。
for var in 序列对象:
语句
else:
语句
for循环基本和while一致,不一样的是for循环专门针对Python中的可遍历对象。什么是可遍历对象请参考运算符重载部分。
2.4.4 其它遍历(zip/map)
zip可以完成列表的并行遍历,例如:
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
for x in list(zip(l1, l2)):
print(x)
输出:
(1, 5) (2, 6) (3, 7) (4, 8)
我们简单再变化一下:
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7,]
for x in list(zip(l1, l2)):
print(x)
输出:
(1, 5) (2, 6) (3, 7)
2.4.5 异常处理
try: 语句
except Error1:
错误处理
except Error2:
错误处理
else:
#没有错误抛出的时候执行 错误处理
finally:
总是处理
抛出异常:
raise XXException
03
—
基本数据类型
3.1 字符串
Python中的字符串定义如下:
s = ‘this is a string.’
s = “this is a string.”
也可以用三个单引号和双引号来定义多行字符串。
Python转义字符也是用\符号来标注,如果不想让字符串转义可以在前面加个r来申明:
s = r‘this is a string.’
3.2 数字
Python中可以定义复述,定义方法如下:
a = 12 + 8j
b = 12 + 8J
Python3之后,Python不分长整型和整型,都按长整型对待。
Python十进制之外进制的表示方式都以0开头,具体如下:
16进制
0xFF
8进制
0o17
2进制
0b1010
把10进制转成其它进制的方式:
把10进制转成8进制 oct(十进制)
把10进制转成16进制 hex(十进制)
把10进制转成2进制 bin(十进制)
3.3 列表
Python中的列表是一个可变的顺序表,用符号[]来表示:
l = [1,2,4,6]
其索引的方式比较灵活,并区别于其它语言,例如:
#读取从1到2的部分
l[1:2]
#读取从1开始的后部分
l[1:]
#读取从2开始的前部分
l[:2]
#读取从后往前数的第2个开始
l[-2:]
3.4 元组
Python中的元组几乎跟列表具有一致的属性,唯一的区别是元组是一个不可变结构,而列表是一个可变结构。定义方法:
l = (1,) l = (1, 2, 4, 6)
3.5 字典
Python字典区别与其它语言,在语法上直接提供了支持,定义方法如下:
d = {‘key’: value, ‘key’:value }
04
—
函数
4.1 函数定义
def (arg1, arg2, …argN):
函数体
#可选的返回,如果不返回将默认返回None
return 结构
Python中def语句本身会直接产生一个函数对象,这区别于其它语言。
4.2 变量作用域
在Python中变量的作用域和其它语言并没有大的区别,唯一的区别就是函数里变量的赋值等于变量的重新申明本地变量,但对变量的“读”操作是可以由里向外搜索的。如果函数里要对全局变量或者上一级函数的变量赋值,则需要用global或者nonlocal关键词修饰,例如:
x = 12
def func():
global x
x = 11
print(x)
输出结果是:11,如果不用global申明,输出12
4.3 函数参数
Python函数参数是可以定义名称参数、可选参数及默认值的,如下代码:
#直接定义
def func(arg1, arg2):
#可选任意参数的定义,args将会是一个元组
def func(*args):
#设置默认值的定义
def func(arg1=12, arg2=13):
#可选任意参数的定义,args将会是一个字典
def func(**args):
4.4 匿名函数(LAMBDA)
语法如下:
lambdm arg1, arg2, …, argN: 表达式
05
—
模块
5.1 模块的定义
Python中的模块就是一个“文件”,并且“模块文件”可以通过文件夹进一步来组织,最终形成代码的模块化组织与管理(类似其它语言的包)。
5.2 模块的导入
直接导入模块,将会在查找目录中选中文件名为module1.py的文件或者其它编译后 的名称为module1的文件 。
import module1
from module1 import function1
06
—
面向对象编程
6.1 类的定义
class ClassName:
def func:
语句
6.2 构造函数
class ClassName:
def __init__(self, arg1, agr2…, argN):
构造部分,可直接引用self
6.3 继承
class ClassName(ParentClassName):
调用超类的方法: Super.xxx
6.4 运算符重载
Python运算符重载也算是一个特色:
__del__:析构函数,当对象被删除的时候调用
__add__:运算符+的重载
__or__:运算符or的重载
__str__:对str()方法的返回值
__call__:直接可以调用对象方法
__getattr__:属性查找不到的时候会调用此方法
__setattr__:属性设置找不到的时候会调用此方法
__delattr__:调用delattr()函数找不到的时候调用
__getattribute__:
__getitem__:
__setitem__:
__delitem__:
__len__:长度
__bool__:布尔测试
__lt__,__gt___ ,__le__,__ge__,__eq__,__ne__:比较
__radd__:
__iadd__:
__iter__,__next__:for循环的约定调用函数
__contains__:
__index__:
__enter__,__exit__:
__get__,__set__:
__delete__:
__new__:
开心罗伯特
专注青少年儿童编程教育
领取专属 10元无门槛券
私享最新 技术干货