热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python学习第五篇:语句和语法

Python程序是语句构成的,语句包含表达式,表达式嵌套在语句中,包含变量和常量,用于处理对象。Python的语法实质上是由

Python程序是语句构成的,语句包含表达式,表达式嵌套在语句中,包含变量和常量,用于处理对象。Python的语法实质上是由表达式、语句和代码块构成的。语句是由表达式构成的,代码块是由多个语句构成的复合语句。

代码块是具有一定格式的多个语句,在Python中,垂直对齐的语句是一个代码块,代码块以冒号:开始,以结束缩进为结束。典型的代码块如下所示:

if x >y :print('x>y')print(x-y)
else &#xff1a;print(&#39;x<&#61;y&#39;)

Python语法的特点是&#xff1a;

  • 测试条件的两端不需要小括号&#xff0c;例如  if x
  • 语句的终止不需要以分号结尾&#xff0c;一行的结束会自动终止该行的语句&#xff1b;
  • 缩进的结束就是代码块的结束&#xff0c;Python以垂直对齐的方式来组织代码块&#xff1b;
  • Python只能使用单行注释&#xff0c;#之后的文本作为注释内容。
  • Python中的所有语句都是实时运行的&#xff0c;并没有独立的编译时间。

一&#xff0c;变量命名

变量是表达式的重要组成部分&#xff0c;Python程序离不开变量&#xff0c;变量是对象的引用&#xff0c;对象是存储数据的结构。

1&#xff0c;变量命名规则

  • 变量名以 下划线或字母 开头&#xff0c;后面接任意数目的字符、数字或下划线&#xff1b;
  • 变量名是区分大小写的&#xff0c;包括创建的变量名以及保留字&#xff1b;
  • 自定义的变量名不能使用保留字。

2&#xff0c;命名惯例

  • 以单一下划线开头的变量名(_x)不会被from module import * 语句导入&#xff1b;
  • 前后有下划线的变量名是系统定义的变量名(__xx__)&#xff0c;对解释器有特殊意义&#xff1b;
  • 以双下划线开头&#xff0c;但结尾没有下划线的变量名(__xx)是类的本地变量&#xff1b;
  • 通过交互模式运行时&#xff0c;只有单个下划线(_)的变量名会保存最后表达式的结果

二&#xff0c;Python的语法风格

Python的复合语句都是首行以&#xff1a;结尾&#xff0c;然后是嵌套的语句块&#xff0c;嵌套的语句块是由相同缩进的语句构成的。

header_line :nested_statement_1nested_statement_2...

1&#xff0c;缩进

不需要在代码中输入任何语法上用来表名嵌套代码块的开始和结尾&#xff0c;取而代之的是&#xff0c;把嵌套代码语句向右缩进相同的距离&#xff0c;Python使用语句的实际缩进来确定代码块的开始和结尾。

所谓缩进&#xff0c;是指嵌套语句左侧的空白&#xff0c;Python并不在乎怎么缩进(可以使用空格或制表符)或者缩进多少(可以使用任意多个空格或制表符)&#xff0c;强烈推荐使用一个制表符代表一个缩进。

语法规则规定&#xff1a;一个单独的嵌套代码块中的所有语句必须缩进相同的距离&#xff0c;否则&#xff0c;就会出现语法错误。

2&#xff0c;多行语句

Python语句一个语句横跨多行&#xff0c;只需要使用一对括号就可以了&#xff1a;小括号&#xff0c;中括号&#xff0c;大括号。任何括在括号中的程序代码都可横跨多行。语句会一直运行&#xff0c;直到Python遇到关闭的括号。

mlist&#61;[1,2,3]x&#61;(a&#43;b&#43;c&#43;d)if (a&#61;&#61;1and b&#61;&#61;2):   print(&#39;OK&#39;)

三&#xff0c;赋值语句

Python中赋值语句把对象赋给一个变量名&#xff0c;基本形式是由表达式&#xff0c;变量和 &#61; 构成的&#xff0c;左侧可以是变量名或对象元素&#xff0c;右侧是表达式。例如&#xff0c;赋值语句基本形式是&#xff1a;a&#61;1&#xff0c;把1赋值给变量a

赋值语句的特性是&#xff1a;

  • 赋值语句建立变量名和对象之间的引用&#xff0c;而不是复制对象&#xff1b;
  • 变量名在首次赋值时会被创建&#xff1b;
  • 变量名在引用前必须赋值。

1&#xff0c;赋值语句的基本形式

使用赋值符号&#61;&#xff0c;把1赋值给变量a&#xff0c;通常情况下&#xff0c;使用基本赋值语句就可以满足程序设计的需要&#xff1a;

a&#61;1

2&#xff0c;序列赋值

序列是指元组&#xff0c;列表和字符串&#xff0c;当在”&#61;“左边编写成元组或列表时&#xff0c;Python把右边的对象和左边的变量从左至右按照位置相互匹配&#xff0c;注意&#xff1a;变量的数量和序列项的数量必须一致。

元组赋值形式&#xff0c;把1&#xff0c;2&#xff0c;3分别赋值给变量a&#xff0c;b&#xff0c;c&#xff1a;

a,b,c&#61;1,2,3

列表赋值形式&#xff0c;把3&#xff0c;4&#xff0c;5分别赋值给变量a&#xff0c;b&#xff0c;c&#xff1a;

[a,b,c]&#61;[3,4,5]

序列赋值运算&#xff0c;把字符串序列中的字符分别赋值给a&#xff0c;b&#xff0c;c&#xff1a;

>>> a,b,c&#61;&#39;123&#39;
>>> a,b,c
(&#39;1&#39;, &#39;2&#39;, &#39;3&#39;)

符合赋值运算&#xff0c;字符串既可以看作是一个序列&#xff0c;也可以看作是一个对象&#xff1a;

>>> ((a,b),c)&#61;&#39;12&#39;,&#39;345&#39;
>>> a,b,c
(&#39;1&#39;, &#39;2&#39;, &#39;345&#39;)

3&#xff0c;多目标赋值运算

多目标赋值运算&#xff0c;实现多个变量共享同一个对象&#xff0c;例如&#xff0c;把5赋值给变量a&#xff0c;b&#xff0c;c&#xff0c;可以认为先把5赋值给c&#xff0c;然后把c赋值给b&#xff0c;最后&#xff0c;把b赋值给a。

a&#61;b&#61;c&#61;5

注意&#xff1a;多目标赋值语句只创建一个变量&#xff0c;三个变量全部指向内存中的同一对象。

当多个变量共享的对象是不可变对象时&#xff0c;由于不支持在原处修改&#xff0c;当对其中一个变量重新赋值&#xff0c;其他变量的值不变。Python会新建一个对象给该变化的变量。

>>> a&#61;b&#61;c&#61;5
>>> c&#61;6
>>> a,b,c
(5, 5, 6)

当多个变量共享的对象是可变对象时&#xff0c;由于支持在原处修改&#xff0c;当对其中一个变量重新赋值时&#xff0c;其他变量的值会改变。

>>> a&#61;b&#61;c&#61;[1]
>>> a[0]&#61;2
>>> a,b,c
([2], [2], [2])

为了避免这个问题&#xff0c;需要单独为每个变量赋值&#xff0c;以便分别初始化变量。

4&#xff0c;扩展序列解包(Python 3.0)

变量前面带有星号(*var)&#xff0c;该变量收集了序列中没有赋值给其他变量的所有项。在一个赋值语句中&#xff0c;只能出现一个变量名前面带有星号&#xff0c;并且该项的类型是列表&#xff1a;

例如&#xff0c;把元组(1,2,3,4)赋值给变量a和b&#xff0c;a匹配序列中的第一项&#xff0c;b匹配序列中剩下的所有项&#xff1a;

>>> a,*b&#61;1,2,3,4
>>> a,b
(1, [2, 3, 4])

四&#xff0c;分支结构

Python的分支结构有三个关键字&#xff1a;if&#xff0c;elif&#xff0c;else&#xff0c;分支结构的一般形式是&#xff1a;

if test1:statement1
elif test2:statement2
else:statement3

如果test1为True&#xff0c;那么执行statement1&#xff1b;

如果test1为False&#xff0c;那么执行elif语句&#xff0c;测试test2&#xff0c;如果为True&#xff0c;那么执行statement2&#xff1b;如果为False&#xff0c;那么执行else语句块的statement3。

分支结构的特点是&#xff1a;

  • 在多分支结构中&#xff0c;if是必需的&#xff0c;且只有一个&#xff0c;处于分支结构的开头&#xff1b;
  • elif是可选的&#xff0c;可以有0&#xff0c;1和多个elif子句&#xff1b;
  • else也是可选的&#xff0c;可以有0和1个&#xff0c;并且只能处于分支结构的末尾。

和C语言一样&#xff0c;Python同样有一个三元表达式&#xff1a;x&#61;a if test else b

其等价的if表达式是&#xff1a;

if test:x&#61;a
else:x&#61;b 

五&#xff0c;循环结构

Python的主要循环结构是while语句和for语句&#xff0c;while语句用于编写通用循环&#xff0c;而for语句用于遍历序列对象内的元素。

Python控制循环的关键字&#xff1a;

  • break&#xff1a;离开循环&#xff0c;从当前行跳出循环&#xff0c;执行循环语句后面的语句&#xff1b;
  • continue&#xff1a;从当前行跳到循环的首行&#xff0c;继续循环。

1&#xff0c;while循环

while循环的一般格式是由测试表达式&#xff0c;循环执行的语句块&#xff0c;和一个可选的else语句块。while语句通过loop_body修改test条件来控制循环的次数&#xff0c;或者使用break来跳离while循环。

while test :loop_body
else:statement_not_hit_break

当控制权离开循环体&#xff0c;且没有遇到break语句时执行else语句块。如果循环体从来没有执行过&#xff0c;那么else语句块也会执行。

2&#xff0c;for循环

for循环是一个通用的序列迭代器&#xff0c;可以遍历任何有序对象内的元素。for语句可以用于字符串、列表、元组和其他可迭代对象。

for循环的一般格式是成员赋值&#xff0c;循环执行的语句块&#xff0c;和一个可选的else语句块。当遍历完序列的所有元素&#xff0c;或者遇到break语句时&#xff0c;结束for循环。

for obj in seq:loop_body
else:statement_not_hit_break

当Python运行for循环时&#xff0c;会逐个把序列中的元素赋值给obj&#xff0c;然后为每个元素执行一次循环体(loop_body)。

for首行中用作赋值的变量名&#xff0c;可以在循环体中修改&#xff0c;但是&#xff0c;当循环回到首行时&#xff0c;obj就会被设置成序列中的下一个元素。

当序列中的元素是序列时&#xff0c;可以设置obj为序列对象&#xff0c;用于接受序列的元素&#xff0c;例如&#xff0c;序列中的元素是元组&#xff0c;设置obj为元组对象&#xff0c;用于接收序列的元素&#xff1a;

>>> for (a,b,c) in [(1,2,3),(4,5,6)]: print(a,b,c)
...
1 2 3
4 5 6

参考文档&#xff1a;


推荐阅读
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 本文详细介绍了C语言中的基本数据类型,包括整型、浮点型、字符型及其各自的子类型,并探讨了这些类型在不同编译环境下的表现。 ... [详细]
  • 本文详细介绍了虚拟专用网(Virtual Private Network, VPN)的概念及其通过公共网络(如互联网)构建临时且安全连接的技术特点。文章探讨了不同类型的隧道协议,包括第二层和第三层隧道协议,并提供了针对IPSec、GRE以及MPLS VPN的具体配置指导。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
Jean_香香
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有