Python 编程语言

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__:

开心罗伯特

专注青少年儿童编程教育

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419G1WESM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券