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中已经修复 ...
随机推荐
- 使用UISearchDisplayController
使用UISearchDisplayController 虽然UISearchDisplayController名字中带有controller,可他不是一个UIView相关的controller,因为, ...
- sudo实例--企业生产环境用户权限集中管理方案实例
根据角色的不同,给不同的用户分配不同的角色1.创建初级工程师3个,网络工程师1个,中级工程师1个,经理1个 # 批量创建用户 for user in chuji{01..03} net01 ...
- 修改Linux SSH连接端口和禁用IP,安装DDoS deflate
测试系统:centos7 修改连接端口 修改配置文件 vi /etc/ssh/sshd_config 去掉port 22的注释,添加新的端口配置 port your_port_num 自定义端口选择建 ...
- 利用skipList(跳表)来实现排序(待补充)
用于排名的数据结构 一般排序为利用堆排序(二叉树)和利用skipList(跳表)的方式 redis中SortedSet利用skipList(跳表)来实现排序,复杂度为O(logn),利用空间换时间,类 ...
- Java基础知识强化之集合框架笔记80:HashMap的线程不安全性的体现
1. HashMap 的线程不安全性的体现: 主要是下面两方面: (1)多线程环境下,多个线程同时resize()时候,容易产生死锁现象.即:resize死循环 (2)如果在使用迭代器的过程中有其他线 ...
- python第十七课——列表生成式
1.列表生成式: 什么是列表生成式? 它就是一串表达式,专门用于生成列表对象,当中包含一系列的业务逻辑: 结构:简介.优雅.阅读性好:比传统获取列表对象来的更加的方便: 它是语法糖的一种: 什么是语法 ...
- 1297. [SCOI2009]迷路【矩阵乘法】
Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...
- 「GXOI / GZOI2019」与或和
题目 广西和贵州的省选?好像很神仙的样子啊 之后发现这是一道水题 我们显然应该拆位考虑 显然我们应该对于每一位都拆一下看看这一位是\(0/1\) 显然我们如果找到一个全是\(1\)的矩阵,那么这一位的 ...
- java web开发环境配置系列(二)安装tomcat
在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<java web开发环境配置系列>来祭奠那逝去的…… 1.下载tomcat压缩包,进入官网http: ...
- 手动安装sublime插件babel-sublime
(一)手动安装babel 在开发reactjs开发使用sublime时,想要代码高亮显示,需要安装babel-sublime插件,在Preferences中的Package Control菜单搜索In ...