> 文章列表 > Python基本语法

Python基本语法

Python基本语法

概述

学习Python已有一段时间,该语言简洁、灵活、可以跨多种平台,自开始学习至现在,一直对此充满热情,目前已经在桌面式window平台、桌面式linux平台、嵌入式linux平台进行了应用层的软件开发,并在桌面式windows和桌面式linux平台结合QT进行了一些编程,本人记忆力非常差,所以希望编写该资料进行总结,方便编程过程中查找。本资料所有章节组织均按照各个技术点进行分类,并不是一本一步一步学习的教材,请读者注意。另外本书会随着本人学习的不断深入,逐步完善。

Python 语法要求

恰当的空格,缩进问题

逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。

语句从新行的第一列开始。

缩进风格统一:

每个缩进层次使用 单个制表符 或四个空格(IDE会自动将制表符设置成4个空格)

Python用缩进而不是{}表示程序块

Python区分大小写

注释

  • 行注释

每行注释前加#号。当解释器看到#,则忽略这一行#后面的内容

  • 段注释

使用三个连续单引号(‘’‘)。当解释看到’‘’,则会扫描到下一个’‘’,然后忽略他们之间的内容。

缩进说明

很多编程语言通过字符(例如:花括号{})、关键字(例如:begain/end)来划分代码块。同时,在配合代码的缩进增加可读性。“龟叔”设计Python语言时,直接通过缩进来组织代码块。“缩进”成为了Python语法强制的规定。
缩进时,几个空格都是允许的,但是数目必须统一。我们通常采用“四个空格”表示一个缩进。
同时,也要避免将“tab制表符”或者tab与空格混合的缩进风格。目前,常用的编辑器一般设置成:tab制表符就是4个空格。

代码风格

Python官方推荐的PEP-8代码风格详细说明,有兴趣的同学可以参考:
https://www.python.org/dev/peps/pep-0008/

使用\\行连接符

一行程序长度是没有限制的,但是为了可读性更强,通常将一行比较长的程序分为多行。这是,我们可以使用\\行连接符,把它放在行结束的地方。Python解释器仍然将它们解释为同一行。

a = '123\\456\\789'
b = [1,2,3,\\4,5,6,\\7,8,9]
print(a)
print(b)

效果:
Python基本语法

标识符

用于变量、函数、类、模块等的名称。标识符有如下特定的规则:
- 区分大小写。如:sxt和SXT是不同的
- 第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线
- 不能使用关键字。比如:if、or、while等。
  • 以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类的构造函数。
    开发中,我们通常约定俗称标识符遵守如下规则:
类型 规则 例子
模块和包名 全小写字母,尽量简单。若多个单词之间用下划线 math, os, sys
函数名 全小写字母,多个单词之间用下划线隔开 phone, my_name
类名 首字母大写,采用驼峰原则。多个单词时,每个单词第一个字母大写,其余部分小写 MyPhone、MyClass、Phone
常量名 全大写字母,多个单词使用下划线隔开 SPEED、MAX_SPEED

变量的声明和赋值

变量的声明和赋值用于将一个变量绑定到一个对象上,声明和赋值同时进行,格式如下:

变量名 = 表达式

*** 最简单的表达式就是字面量。比如:a = 123 。 运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。***

  • 变量在使用前必须先被初始化(先被赋值)
  • 可以通过 del(变量名) 语句删除不在使用的变量。
  • 链式赋值用于同一个对象赋值给多个变量,如下所示,引用的对象地址相同
a = b = c = 123
print(id(a))
print(id(b))
print(id(c))

效果:
Python基本语法

  • 系列解包赋值给对应相同个数的变量(个数必须保持一致)
a,b,c,d = 1,1.2,'I Love U',(5,6,7)
print('a : {0}'.format(a))
print('b : {0}'.format(b))
print('c : {0}'.format(c))
print('d : {0}'.format(d))

效果:
Python基本语法

  • 系列解包赋值可进行变量交换
a,b = 1,5
print('a:{0} b:{1}'.format(a,b))
a,b = b,a
print('a:{0} b:{1}'.format(a,b))

效果:
Python基本语法

  • **Python 不支持常量,**即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。
SPEED = 100
print(SPEED)
SPEED = 60 #实际是可以改的。只能逻辑上不做修改。
print(SPEED)

效果:
Python基本语法

帮助系统

通过’help()‘进入帮助系统,并通过输入’quit’来退出帮助系统
Python基本语法
或通过 help(‘参数名’) 以及 help(对象名’) 来查看帮助信息,如下:

print('测试 help(\\'keywords\\') 功能:')
help('keywords')print('测试 help(对象) 功能:')
class pClass():'''这是我自己定义的类,这个类包含以下方法:1. 方法12. 方法2 3. 方法3'''
help(pClass)

效果:
Python基本语法

对象

Python中,一切皆对象。每个对象由:标识(identity)、类型(type)、value(值)组成。

  • 标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。
  • 类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用type(obj)获得对象的所属类型。
  • 值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值。

对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。通过 id(对象名) 函数获取对象存放地址,通过 type(对象名) 函数可获取对象类型,如下:

a = 3
b = '我爱你'
c = 3.141
print(type(a))
print(id(a))
print(type(b))
print(id(b))
print(type(c))
print(id(c))

效果:
Python基本语法
Python基本语法

引用

在Python中,变量也称为:对象的引用。因为,变量存储的就是对象的地址。变量通过地址引用了“对象”,变量位于:栈内存;对象位于:堆内存。

  • Python是动态类型语言,变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。
  • Python是强类型语言,每个对象都有数据类型,只支持该类型支持的操作。

如下图所示:
Python基本语法

数据类型

每个对象都有类型,python中最基本的内置数据类型:

整型

整数如:2345,10,50
Python中,除10进制,还有其他三种进制:

  • 0b或0B,二进制 0 1
  • 0o或0O,八进制 0 1 2 3 4 5 6 7
  • 0x或0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
id(0xff)

Python基本语法

  • 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0的结果是10.0
  • Python3中,int可以存储任意大小的整数
  • Python3中可以做超大数的计算,而不会造成“整数溢出”,这也是Python特别适合科学运算的特点。
    int()函数进行数据类型转换
  • 浮点数直接舍去小数部分。如:int(9.9)结果是:9
  • 布尔值True转为1,False转为0。 如:int(True)结果是1
  • 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
print(int(3.14))
print(int(3.99))
print(int(True))
print(int('123'))
print(int('i love u'))

效果:
Python基本语法
round()函数进行四舍五入
round()函数可以返回四舍五入的值,但不会改变原有值,而是产生新的值

print(round(3.55))
print(round(3.49))
print(type(round(3.55)))

效果:
Python基本语法

浮点型

浮点数,称为float,即小数。

  • 浮点数用科学计数法表示。比如:3.14,表示成:314E-2或者314e-2;
  • 浮点数在内存中也是按照科学计数法存储;
  • 用 float() 函数转换其他类型为浮点数;
print(float(3))
print(float('678.234'))
print(float(0xf1))
print(float('i love you'))

效果:
Python基本语法

布尔型

仅包含:True、False

Python3中,把True和False定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加。

print(2+True)

效果:
Python基本语法

字符串型

如:“abc”,”sxt”

时间的表示

计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算。我们也把1970年这个时刻成为“unix时间点”。
python中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点值。例如:1530167364.8566

import time
#print(help(time))
print(time.time())
print(time.localtime())

Python基本语法

算术运算符

Python基本语法

1,d2,d3,d5 = 1,2,3,5
print('1+2={0} type:{1} '.format(d1+d2,type(d1+d2)))
print('1-2={0} type:{1} '.format(d1-d2,type(d1-d2)))
print('2*3={0} type:{1} '.format(d2*d3,type(d2*d3)))
print('3/1={0} type:{1} '.format(d3/d1,type(d3/d1)))
print('5//2={0} type:{1} '.format(d5//d2,type(d5//d2)))
print('5%2={0} type:{1} '.format(d5%d2,type(d5%d2)))
print('5**3={0} type:{1} '.format(d5**d3,type(d5**d3)))
print(d1//0)

效果:
Python基本语法
增强型运算符
Python基本语法

比较运算符

Python基本语法

print(type(1>2))
print(1>2)
print(id(1>2))

效果:
Python基本语法

逻辑运算符

Python基本语法

print(False and 0.25)
print(type(False and 0.25))
print('---------------')
print(5 or 0.25)
print(type(5 or 0.25))
print('---------------')
print(not 6)
print(type(not 6))
print('---------------')

效果:
Python基本语法

同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址

Python基本语法
is 与 == 区别

  • is 用于判断两个变量引用对象是否为同一个,既比较对象的地址
  • == 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法

Matplotlib使用

import matplotlib.pyplot as plt
import numpy as npx = np.arange(20)
y = x**2plt.plot(x, y)

效果:
Python基本语法