Python全栈开发(三)——python基础语法(二)

简介: 我们昨天说了python的数据类型,今天说说python的缩进规则和函数、python的顺序语句结构,条件和分支语句以及循环语句。缩进不规范会报错(IndentationError: unexpected indent),python的函数使用,从定义到实参形参再到分类。

缩进规则

python是使用缩进来区分不同的代码块,所以对缩进有严格要求。

1、缩进不符合规则,解析器会报缩进错误,程序无法运行。

缩进错误,python报错

IndentationError:unexpected indent


2、缩进的不同,程序执行的效果也有可能产生差异。

代码缩进规则

缩进是针对逻辑行的,因此首先要区分代码中的物理行和逻辑行。

物理行:代码编辑器中显示的代码,每一行是一个物理行。

43.png


逻辑行:Python解释器对代码进行解释,一个语句是一个逻辑行。

44.png

python代码中

1、可以使用";"号将多个逻辑行合并成一个物理行。

i=5;j=2;k=0;print(i,j,k)
>>>输出结果 5 2 0

**这里有个前提,多个逻辑行应该属于同一个代码层级。

像这种分支else代码块就不能直接使用“;”连接了。

if True:a=1; else: a=2


2、可以使用"\"对一个逻辑行进行换行,书写为多个物理行。

print("1111111111\
22222")
>>>输出结果 111111111122222

3、字典、列表等变量赋值语句,是可以直接换行,书写为多个物理行的。

45.png

缩进规则

1、逻辑行的“首行”需要顶格,即无缩进(也就是一份源码的第一个逻辑行)

1. a="hello"
2. print(a)

2、相同逻辑层(同一个代码块)保持相同的缩进量

3、":"标记一个新的逻辑层

如:while循环、if分支、函数声明、类定义等等

增加缩进表示进入下一个代码层

减少缩进表示返回上一个代码层


缩进量及缩进字符

Python可以使用空格或制表符(tab符)标记缩进。缩进量(字符个数)不限。

空格tab符通常都以空白形式显示,混用不容易区分,影响代码阅读,增加维护及调试的困难。因此 Python PEP8 编码规范,指导使用4个空格作为缩进。


函数

任何一门语言都离不开函数,python也不例外。


函数定义

函数概述

在程序设计中,函数的使用可以提升代码的复用率可维护性

提升代码的复用率: 程序设计中,一些代码的功能是相同的,操作是一样的,只不过针对的数据不一样。此种情况下,可以将这种功能写成一个函数模块,要使用此功能时只需调用这个函数模块就可以了。

提升代码的可维护性: 使用函数后,实现了代码的复用,某个功能需要核查或修改时,只需要核查或修改此功能相对应的函数就可以了。对功能的修改可以使调用该函数的所有模块同时生效,极大提升了代码的可维护性。


内建函数:内建函数也叫内置函数,即系统已经定义好的函数,开发者可以直接调用。为了使开发者对内函数和自定义函数有一个直观的认识,下面给出一个简单示例。


调用系统内建函数pow():

pow(2, 4)

自定义函数func():

def func(a, b):
    return a ** b
func(2, 4)

上述代码中,首先调用了Python语言的内建函数pow()进行幂运算;

然后,自定义了一个函数func(),功能是输出a的b次幂;最后调用了自定义函数func(),输出相应的结果。可以看出,Python语言中函数的定义和使用都是非常便捷的。


函数的定义

在Python语言中,函数通常是由函数名、参数列表以及一系列语句组成的函数体构成的。函数定义的一般格式如下:

def 函数名(参数列表):
    函数体

例如:

def hello():
    print("hello")
    print("world!")

以上实例定义的hello()函数虽然不包含任何参数,但是函数名后的一对括号是不能省略的。在实际应用中,稍复杂的函数通常都会包含一个或多个参数。


通常情况下,在Python语言中定义一个具有特定功能的函数需要符合以下规则:


函数代码块以def关键字开头,后接函数标识符名称和形参列表;

任何传入的参数和自变量必须放在圆括号内;

函数的第一行语句可以选择性地使用文档字符串(即函数说明);

函数内容以冒号起始,并且严格统一缩进;

函数都有返回值,默认返回None。


形参和实参

在编程语言中,函数定义时用的是形参,调用时用的是实参


形参(parameter),全称为"形式参数",不是实际存在的变量,又称虚拟变量。形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。


实参(argument),全称为"实际参数",是在调用时传递给函数的参数。实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。


形参和实参的功能是数据传送。


在调用函数时,实参将赋值给形参。必须注意实参的个数、类型应与形参要一一对应,并且实参必须要有确定的值。形参的作用域一般仅限函数体内部,而实参的作用域根据实际设置而定。


函数的返回值

函数的返回值是函数执行完成后,系统根据函数的具体定义返回给外部调用者的值。


在实际开发中,有时不仅仅要执行某个函数的功能,而且还需要把该函数的执行结果作为其他函数或功能的计算单元。所以,函数返回值是非常有用的


在Python语言中,当函数运行到return语句时即执行完毕,同时将结果返回。因此,可以在函数内部通过条件判断和循环设置实现较复杂的逻辑,并返回预期的结果。如果没有return语句,函数体内所有语句执行完毕后默认返回None。


函数分类

内置函数

Python语言中自带的函数叫做内建函数,这些内建函数对大部分常用操作进行有效封装,可以直接调用,为开发提供了极大便利。由于内建函数是Python语言内置的函数,因此不需要导入任何函数库即可直接调用。


在Python语言中,除内建函数外的其他类型函数通常被称为第三方函数。


第三方函数一般是由其它开发者或组织针对某些特定需求编写的函数库,并共享给大家使用。Python语言的强大功能,也正是得益于其丰富的第三方函数库。不管是内建函数,还是第三方函数,在Python语言中都可以非常方便的使用。

要成功调用一个内建函数或第三方函数,首先需要知道的是该函数的准确名称和参数列表信息。如求绝对值的内建函数abs()有一个数值类型参数。


自定义函数

当内建函数不能满足要求时,开发者可以根据实际需要自定义函数。函数自定义完成后,开发者可以在其他代码处通过函数名调用。


在Python语言中,内建函数可以直接使用,第三方函数需要使用import命令导入相应的库才能使用。对于自定义函数,其定义和调用可以在同一个文件中,也可分离成不同的文件。


from test import hello
hello()

顺序语句结构

程序有三种基本的控制结构:顺序结构选择结构循环结构


顺序结构

顺序结构是最简单也是最常见的一种结构,采用顺序结构的程序通常按照由前到后的顺序执行各个语句,直到程序结束,结构如下所示:

顺序结构:


46.png

顺序结构实例

举例如下:

a = 2
b = 3
c = a + b
d = c * 24
print(a, b, c, d)

条件与分支语句

条件语句是通过判断条件是否成立,根据条件表达式的结果做出决策,控制不同代码块的执行。


条件表达式

条件表达式由运算符和操作数组成


例如:a<4,其中a、4都是操作数,小于符号<是运算符


判断条件可以是具有布尔属性的任意元素,包括数据、变量或由变量与运算符组成的表达式,若其布尔属性为True,条件成立;若布尔属性为False,条件不成立。

除了非空常量外,Python还常使用关系操作符和成员运算符构成判断条件 。


条件表达式常用的运算符有:

算术运算符:+、-、*、/、//、%、**

关系运算符:


Python支持通过保留字not、and和or对判断条件进行逻辑组合:


not,表示单个条件的“否”关系。如果“条件”的布尔属性为True,“not 条件”的布尔属性就为False;如果“条件”的布尔属性为False,“not 条件”的布尔属性就为True。

and,表示多个条件之间的“与”关系。当且仅当使用and连接的所有条件的布尔属性都为True时,逻辑表达式的布尔属性为True,否则为False。

or,表示多个条件之间的“或”关系。当且仅当使用or连接的所有条件的布尔属性都是False时,逻辑表达式的布尔属性为False,否则为True。


单分支选择结构

47.png

  • 若if语句中的判断条件成立,执行if语句后的代码段;
  • 若判断条件不成立,则跳过if语句后的代码段。
  • 单分支结构中的代码段只有“执行”与“跳过”两种情况。

示例:使用单分支结构判断当天是否是星期天。


day = int(input("今天是工作日吗(请输入整数1~7)?"))
if day in [1,2,3,4,5]:
  print("今天是工作日。")
if day in [6,7]:
  print("今天非工作日。")

双分支选择结构

双分支选择结构就是if else语句,相信大家都不陌生。


48.png


  • 若if语句中的判断条件成立,执行代码段1
  • 若判断条件不成立,则执行代码段2

示例:使用二分支结构判断当天是否是工作日。

day = int(input("今天是工作日吗(请输入整数1~7)?"))
if day in [1,2,3,4,5]:
  print("今天是工作日。")
else:
  print("今天非工作日。")

多分支选择结构


49.png

选择结构的嵌套

选择结构的嵌套是指选择结构的内部包含选择结构

if 判断条件1:

       代码段1

       if判断条件2:

               代码段2

       代码段3


三元表达式

python中没有c语言中的三目运算符,但是可以通过以下的形式实现三目运算符的功能

格式:条件判断为真时的结果 if 判断条件 else 条件为假时的结果

示例:x=x-1 if x>0 else x=x+1

等价于:


if x > 0:
    x = x - 1
else:
    x = x + 1


我们可以利用三元表达式来实现裴波那契数列:

1. def fun(n):
2. return n if n < 2 else fun(n - 1) + fun(n - 2)


还有一种用法,用bool方法选择相应的值,例如:

x = 1
print([2, 3][bool(x)])
x = 0
print([2, 3][bool(x)])

结果:

1. 3
2. 2


循环语句

在实际应用中有些需要重复进行的操作,可以用循环语句实现。

循环语句有:

while、do while、for


while循环

50.png


  • 若循环条件为True,则循环执行while循环中的代码段;
  • 若循环条件为False,终止while循环。
  • 若while循环的条件总是True,这种情况叫做死循环 。

例如:使用while循环实现计算n的阶乘


n = int(input("请输入一个整数:"))
fact = 1
i = 1
while i<= n:
  fact = fact*i
  i = i + 1
print("n!={}".format(fact))

while else循环

Python的while循环也支持使用保留字else产生分支。

示例2:使用while-else循环实现计算n的阶乘

n = int(input("请输入一个整数:"))
fact = 1
i = 1
print("n!计算中……")
while i<= n:
  fact = fact*i
  i = i + 1
else:
  print("n!计算完成 ,循环正常结束")
print("n!={}".format(fact))

for 循环

51.png

  • 目标可以是字符串、文件、range()函数或组合数据类型等;
  • 循环变量用于保存本次循环中访问到的遍历结构中的元素;
  • for循环的循环次数取决于遍历的目标元素个数。

示例1:遍历字符串中的每个字符


string = input("请输入一个字符串:")
for c in string:
  print(c)

for else循环

for…else循环的具体实现形式:

for 循环变量 in 目标:
    循环体
else:
    代码块

用法与while…else相同,如果循环体结束后没有碰到break语句,就会执行else语句块,如果结束之前碰到了break语句,就会跳出整个for循环,因此else语句块也就不会执行。


循环控制语句

·在循环语句中,有时候需要达到中断循环,或者跳过本次循环,执行下次循环的情况,因此就需要有循环控制语句

python中使用break、continue语句控制循环的执行过程

break用于跳出整个循环

continue用于跳出本次循环,继续执行下次循环


break语句

while        循环条件:

               [代码段1]

               if 判断条件:

                       break

               [代码段2]


for 循环变量 in 遍历结构:

               [代码段1]

               if 判断条件:

                       break

               [代码段2]


continue语句

while        循环条件:

               [代码段1]

               if 判断条件:

                       continue

               [代码段2]


for 循环变量 in 遍历结构:

               [代码段1]

               if 判断条件:

                      continue

               [代码段2]


pass语句

pass的意思是过,pass掉就是淘汰掉的意思。

在python中,pass的意思是空语句,pass语句不做任何事情,只是为了保持程序结构的完整性。


我们下次说说面向对象,python基础有很多的知识,篇幅有限,不能一一列举完,需要的可以自行搜索。

相关文章
|
4月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
318 20
|
2月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
3月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
258 1
|
3月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
106 2
|
4月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
210 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
3月前
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
153 0
|
5月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
198 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
3月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...
|
5月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
128 3
|
5月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
95 2

推荐镜像

更多