首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com