Python 学习 第五篇:语句和语法
Python程序是语句构成的,语句包含表达式,表达式嵌套在语句中,包含变量和常量,用于处理对象。Python的语法实质上是由表达式、语句和代码块构成的。语句是由表达式构成的,代码块是由多个语句构成的复合语句。
代码块是具有一定格式的多个语句,在Python中,垂直对齐的语句是一个代码块,代码块以冒号:开始,以结束缩进为结束。典型的代码块如下所示:
if x >y :
print('x>y')
print(x-y)
else :
print('x<=y')
Python语法的特点是:
- 测试条件的两端不需要小括号,例如 if x<y 是完全正确的。
- 语句的终止不需要以分号结尾,一行的结束会自动终止该行的语句;
- 缩进的结束就是代码块的结束,Python以垂直对齐的方式来组织代码块;
- Python只能使用单行注释,#之后的文本作为注释内容。
- Python中的所有语句都是实时运行的,并没有独立的编译时间。
一,变量命名
变量是表达式的重要组成部分,Python程序离不开变量,变量是对象的引用,对象是存储数据的结构。
1,变量命名规则
- 变量名以 下划线或字母 开头,后面接任意数目的字符、数字或下划线;
- 变量名是区分大小写的,包括创建的变量名以及保留字;
- 自定义的变量名不能使用保留字。
2,命名惯例
- 以单一下划线开头的变量名(_x)不会被from module import * 语句导入;
- 前后有下划线的变量名是系统定义的变量名(__xx__),对解释器有特殊意义;
- 以双下划线开头,但结尾没有下划线的变量名(__xx)是类的本地变量;
- 通过交互模式运行时,只有单个下划线(_)的变量名会保存最后表达式的结果
二,Python的语法风格
Python的复合语句都是首行以:结尾,然后是嵌套的语句块,嵌套的语句块是由相同缩进的语句构成的。
header_line :
nested_statement_1
nested_statement_2
...
1,缩进
不需要在代码中输入任何语法上用来表名嵌套代码块的开始和结尾,取而代之的是,把嵌套代码语句向右缩进相同的距离,Python使用语句的实际缩进来确定代码块的开始和结尾。
所谓缩进,是指嵌套语句左侧的空白,Python并不在乎怎么缩进(可以使用空格或制表符)或者缩进多少(可以使用任意多个空格或制表符),强烈推荐使用一个制表符代表一个缩进。
语法规则规定:一个单独的嵌套代码块中的所有语句必须缩进相同的距离,否则,就会出现语法错误。
2,多行语句
Python语句一个语句横跨多行,只需要使用一对括号就可以了:小括号,中括号,大括号。任何括在括号中的程序代码都可横跨多行。语句会一直运行,直到Python遇到关闭的括号。
mlist=[1,2,3] x=(a+b
+c+d) if (a==1
and b==2):
print('OK')
三,赋值语句
Python中赋值语句把对象赋给一个变量名,基本形式是由表达式,变量和 = 构成的,左侧可以是变量名或对象元素,右侧是表达式。例如,赋值语句基本形式是:a=1,把1赋值给变量a
赋值语句的特性是:
- 赋值语句建立变量名和对象之间的引用,而不是复制对象;
- 变量名在首次赋值时会被创建;
- 变量名在引用前必须赋值。
1,赋值语句的基本形式
使用赋值符号=,把1赋值给变量a,通常情况下,使用基本赋值语句就可以满足程序设计的需要:
a=1
2,序列赋值
序列是指元组,列表和字符串,当在”=“左边编写成元组或列表时,Python把右边的对象和左边的变量从左至右按照位置相互匹配,注意:变量的数量和序列项的数量必须一致。
元组赋值形式,把1,2,3分别赋值给变量a,b,c:
a,b,c=1,2,3
列表赋值形式,把3,4,5分别赋值给变量a,b,c:
[a,b,c]=[3,4,5]
序列赋值运算,把字符串序列中的字符分别赋值给a,b,c:
>>> a,b,c='123'
>>> a,b,c
('1', '2', '3')
符合赋值运算,字符串既可以看作是一个序列,也可以看作是一个对象:
>>> ((a,b),c)='12','345'
>>> a,b,c
('1', '2', '345')
3,多目标赋值运算
多目标赋值运算,实现多个变量共享同一个对象,例如,把5赋值给变量a,b,c,可以认为先把5赋值给c,然后把c赋值给b,最后,把b赋值给a。
a=b=c=5
注意:多目标赋值语句只创建一个变量,三个变量全部指向内存中的同一对象。
当多个变量共享的对象是不可变对象时,由于不支持在原处修改,当对其中一个变量重新赋值,其他变量的值不变。Python会新建一个对象给该变化的变量。
>>> a=b=c=5
>>> c=6
>>> a,b,c
(5, 5, 6)
当多个变量共享的对象是可变对象时,由于支持在原处修改,当对其中一个变量重新赋值时,其他变量的值会改变。
>>> a=b=c=[1]
>>> a[0]=2
>>> a,b,c
([2], [2], [2])
为了避免这个问题,需要单独为每个变量赋值,以便分别初始化变量。
4,扩展序列解包(Python 3.0)
变量前面带有星号(*var),该变量收集了序列中没有赋值给其他变量的所有项。在一个赋值语句中,只能出现一个变量名前面带有星号,并且该项的类型是列表:
例如,把元组(1,2,3,4)赋值给变量a和b,a匹配序列中的第一项,b匹配序列中剩下的所有项:
>>> a,*b=1,2,3,4
>>> a,b
(1, [2, 3, 4])
四,分支结构
Python的分支结构有三个关键字:if,elif,else,分支结构的一般形式是:
if test1:
statement1
elif test2:
statement2
else:
statement3
如果test1为True,那么执行statement1;
如果test1为False,那么执行elif语句,测试test2,如果为True,那么执行statement2;如果为False,那么执行else语句块的statement3。
分支结构的特点是:
- 在多分支结构中,if是必需的,且只有一个,处于分支结构的开头;
- elif是可选的,可以有0,1和多个elif子句;
- else也是可选的,可以有0和1个,并且只能处于分支结构的末尾。
和C语言一样,Python同样有一个三元表达式:x=a if test else b
其等价的if表达式是:
if test:
x=a
else:
x=b
五,循环结构
Python的主要循环结构是while语句和for语句,while语句用于编写通用循环,而for语句用于遍历序列对象内的元素。
Python控制循环的关键字:
- break:离开循环,从当前行跳出循环,执行循环语句后面的语句;
- continue:从当前行跳到循环的首行,继续循环。
1,while循环
while循环的一般格式是由测试表达式,循环执行的语句块,和一个可选的else语句块。while语句通过loop_body修改test条件来控制循环的次数,或者使用break来跳离while循环。
while test :
loop_body
else:
statement_not_hit_break
当控制权离开循环体,且没有遇到break语句时执行else语句块。如果循环体从来没有执行过,那么else语句块也会执行。
2,for循环
for循环是一个通用的序列迭代器,可以遍历任何有序对象内的元素。for语句可以用于字符串、列表、元组和其他可迭代对象。
for循环的一般格式是成员赋值,循环执行的语句块,和一个可选的else语句块。当遍历完序列的所有元素,或者遇到break语句时,结束for循环。
for obj in seq:
loop_body
else:
statement_not_hit_break
当Python运行for循环时,会逐个把序列中的元素赋值给obj,然后为每个元素执行一次循环体(loop_body)。
for首行中用作赋值的变量名,可以在循环体中修改,但是,当循环回到首行时,obj就会被设置成序列中的下一个元素。
当序列中的元素是序列时,可以设置obj为序列对象,用于接受序列的元素,例如,序列中的元素是元组,设置obj为元组对象,用于接收序列的元素:
>>> for (a,b,c) in [(1,2,3),(4,5,6)]: print(a,b,c)
...
1 2 3
4 5 6
参考文档:
Python 学习 第五篇:语句和语法的更多相关文章
- Python学习第五篇——如何访问字典
# the example_1 aim to tell how to use dctionary,and how to access list or dictionary infos={"f ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Python学习笔记进阶篇——总览
Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...
- python学习第五次笔记
python学习第五次笔记 列表的缺点 1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2.列表只能按照顺序存储,数据与数据之间关联性不强 数据类型划分 数据类型:可变数据 ...
- Python学习第五堂课
Python学习第五堂课推荐电影:华尔街之狼 被拯救的姜哥 阿甘正传 辛德勒的名单 肖申克的救赎 上帝之城 焦土之城 绝美之城 #上节内容: 变量 if else 注释 # ""& ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- Python 学习笔记---基础篇
1. 简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200 import subprocess cmd="cmd.exe" b ...
- Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性
新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...
随机推荐
- Linux 新建用户和组命令
用户的角色是通过UID和GID识别的. UID用户ID:相当于各为的身份证,在系统中是唯一的 GID组ID:相当于各为的家庭或者你们的学校. 1.新建用户及设置密码命令如下: useradd [参数] ...
- 为什么说Java中只有值传递----说服自己
在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了.如果你有以下想法,那么你有必要好好阅读本文. 错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递.如果是个引用,就 ...
- BZOJ4802:欧拉函数(Pollard-Rho,欧拉函数)
Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Output 4 Soluti ...
- 1305. [CQOI2009]跳舞【最大流+二分】
Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会 ...
- Day10 API
String类 String是不可变类:值一旦确定了,就不会更改. public static void main(String[] args) { String s1 = "hello&q ...
- Day3 分支结构和循环结构
流程控制分类 顺序语句:从上到下按顺序依次执行 分支语句:根据条件不同,执行不同语句 循环语句:重复执行某些动作 单分支条件判断语句 条件语句 只是单独的判断条件是否成立 if选择结构是根据条件判断之 ...
- java基础集合类——ArrayList 源码略读
ArrayList是java的动态数组,底层是基于数组实现. 1. 成员变量 public class ArrayList<E> extends AbstractList<E> ...
- h5py
解决办法: sudo apt-get install libhdf5-dev sudo apt-get install python-h5py
- 数字电路中应避免产生不必要的锁存器 Latch
锁存器(Latch)是数字逻辑电路中很重要的一种基本电路,常见的锁存器包括三个端口:数据输入口.数据输出口.使能端.当使能端为高电平时,输入口的数据直接送到输出口,此时输入输出口可以看成是直接连通的: ...
- Kafka设计解析(一)Kafka背景及架构介绍
转载自 技术世界,原文链接 Kafka设计解析(一)- Kafka背景及架构介绍 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Pr ...