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

news2024/11/24 2:00:28

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


目录

 缩进规则

代码缩进规则

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

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

缩进规则

缩进量及缩进字符

函数

函数定义

函数概述

函数的定义

形参和实参

函数的返回值

函数分类

内置函数

自定义函数

顺序语句结构

顺序结构

顺序结构实例

条件与分支语句

条件表达式

单分支选择结构

双分支选择结构

多分支选择结构

选择结构的嵌套

三元表达式

循环语句

while循环

while else循环

for 循环

for else循环

循环控制语句

break语句

continue语句

pass语句


缩进规则

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

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

缩进错误,python报错

IndentationError:unexpected indent

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

代码缩进规则

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

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

在这里插入图片描述

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

在这里插入图片描述


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、字典、列表等变量赋值语句,是可以直接换行,书写为多个物理行的。

在这里插入图片描述

缩进规则

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

a="hello"
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()

顺序语句结构

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

顺序结构

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

顺序结构实例

举例如下:

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。

单分支选择结构

在这里插入图片描述

  • 若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语句,相信大家都不陌生。

在这里插入图片描述

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

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

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

多分支选择结构

在这里插入图片描述

选择结构的嵌套

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

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

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

def fun(n):
    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)])

结果:

3
2

循环语句

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

循环语句有:
while、do while、for

while循环

在这里插入图片描述

  • 若循环条件为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 循环

在这里插入图片描述

  • 目标可以是字符串、文件、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基础有很多的知识,篇幅有限,不能一一列举完,需要的可以自行搜索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:存储

研究Solidity存储引用和智能合约存储布局 原文链接: https://betterprogramming.pub/all-about-solidity-data-locations-part-i-storage-e50604bfc1ad这是深入Solidity数据存储位置系列的另一篇。在今天的文章中,我们将更详细地介绍EVM中的一个重要数据位置:存储(Storage)…

feign简介与实战

一、JAVA 项目中实现远程接口调用 1&#xff09;Httpclient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带…

APS生产排产软件在金属加工行业的应用

金属加工简称金工&#xff0c;指人类对由金属元素或以金属元素为主构成的具有金属特性的材料进行加工的生产活动。是一种把金属物料加工成为物品、零件、组件的工艺技术&#xff0c;包括了桥梁、轮船等的大型零件&#xff0c;乃至引擎、珠宝、腕表的细微组件。它被广泛应用在科…

C++入门(一)

目录 一. 关键字 二. 命名空间 三. 输入&输出 1.输出 2.输入 四. 缺省参数 1.全缺省参数 2.半缺省参数 五. 函数重载 1.类型 2.原理 一. 关键字 简单了解一下都有哪些关键字 二. 命名空间 在c语言的学习之中&#xff0c;我们知道&#xff0c;在同一…

js内置对象

包装类 <script>/*var anew Number(123);var bnew String("慕课网");var cnew Boolean(true);*/var a 123;var b 慕课网;var c true;console.log(a);console.log(typeof a);console.log(b);console.log(typeof b);console.log(c);console.log(typeof c); &…

WEB页面请求的过程

WEB页面请求的过程 需求&#xff1a;学校网络里的电脑访问到Google网络中的web服务器中 1、电脑通过物理网线接入校园网中 2、电脑运行DHCP协议&#xff0c;从本地的DHCP服务器获取一个IP地址&#xff08;DHCP服务器一般由网关路由器充当&#xff09; 获取过程&#xff1a; …

盛水最多的容器 + 接雨水(相向双指针)

目录 一、盛水最多的容器 二、 接雨水 2.1 - 前后缀分解 2.2 - 相向双指针 一、盛水最多的容器 题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使…

BPM结合低代码,为企业信息化建设添砖加瓦

编者按&#xff1a;业务流程管理和低代码平台结合的意义是什么&#xff1f;能为用户带来什么&#xff1f;本文了分析了低代码平台和BPM结合的意义&#xff0c;并进一步介绍了低代码BPM软件开发平台的应用场景。关键词&#xff1a;嵌入式流程激活&#xff0c;端到端流程打通&…

【ES6】模块化语法(默认、按需导入import导出export的操作)

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;ES6模块化语法(默认、按需导入导出的操作) 本文速览&#xff1a; 目录 本文速览&#x…

Word图片自动编号,调整图片顺序自动更新图片编号,引用该图片的地方也对应更新

Word图片自动编号&#xff0c;调整图片顺序自动更新图片编号&#xff0c;引用该图片的地方也对应更新1.软件环境⚙️2.问题描述&#x1f50d;3.解决方法&#x1f421;3.1.为图片添加题注&#xff0c;实现图片自动编号3.2.设置编号格式&#xff08;可选&#xff09;3.3.在文中引…

参数服务器的参数设置

#! /usr/bin/env python #condingutf-8 import rospy if __name__ __main__: #初始化节点 rospy.init_node(param_set) #新增参数 rospy.set_param(type_p,xiaohuangche) rospy.set_param(radius_p,0.15) #修改参数 rospy.set_param(radius_p,0.2…

我的【二哈喇子!】周岁生日

文章目录回看CSDN的2022新年新Flag回看CSDN的2022 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 各位朋友大家好&#xff0c;我是二哈喇子&#xff01;谢谢你现在在阅读这篇文章。 二零二二年一月二十一日&#xff0c;我的小二哈"出生"了&#x…

2022年报表开发工具Stimulsoft产品迭代汇总

Stimulsoft Reports是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

AC7811-BLDC无感控制代码详解

BLDC控制框图 BLDC 的控制电路对电机转子位置信号进行逻辑变换后产生脉宽调制 PWM 信号&#xff0c;驱动逆变器的功率开关管&#xff0c;从而控制 BLDC 电机各相绕组按一定顺序工作&#xff0c;在电机气隙中产生跳跃式旋转磁场。BLDC 转子旋转时&#xff0c;每转过 60&#xf…

云游戏三重门:体验、生态和硬件

配图来自Canva可画 如今硬件已经成为制约游戏体验的最主要因素之一。而云游戏的提出&#xff0c;则被看做是解决这种矛盾的其中一种重要手段。对于玩家来说&#xff0c;云游戏意味着既不再需要价格高昂的硬件设备&#xff0c;也不再需要体量庞大的游戏本体&#xff0c;就能获得…

ssd重装系统的详细教程

当我们给电脑更换安装了新的固态硬盘&#xff0c;原来的系统没有了。那么电脑新固态ssd怎么安装win7系统&#xff0c;下面小编就教下大家ssd重装系统教程&#xff0c;希望大家都可以学会哦。 工具/原料&#xff1a; 系统版本&#xff1a;Windows7 品牌型号&#xff1a;惠普星…

PDF怎么转换成excel免费?快收藏这几个方法

在我们日常处理的的工作文件中&#xff0c;PDF文件的数量是越来越高的&#xff0c;而且因为PDF文件比较方便观看&#xff0c;所以很多数据文件也都是PDF格式的&#xff0c;不过PDF文件是不可编辑的&#xff0c;所以在一定程度上还是有限制的&#xff0c;这样我们就不能及时修改…

数据的存储(2)大小端字节序存储

TIPS 1. 2. 3. *是解应用操作符&#xff0c;*指针变量&#xff0c;对指针变量进行解应用操作&#xff0c;固然没问题。但是要知道的是&#xff1a;也可以直接对最最原始的地址进行解应用操作&#xff0c;如*字符串常量&#xff0c;*数组名&#xff0c;*&a等等&#…

云开发项目如何管理资产下的设备?

在开发 SaaS 应用前&#xff0c;开发者需要先在 涂鸦 IoT 开发平台 上创建云开发项目并进行必要的配置。下面我将为大家介绍管理资产的详细操作方法。 云开发支持以资产为维度&#xff0c;对不同资产下的设备进行权限分隔和资产内设备的统一管理。 新建资产 资产&#xff08…

dpdk-lvs的一次线上故障排查报告

背景 我们内部基于 dpdk 自研的高性能负载均衡器 dpdk-lvs 已经在多个机房部署上线&#xff0c;运行正常&#xff0c;但近期有多个金融相关的业务反馈&#xff0c;服务数据包在经过dpdk-lvs转发后&#xff0c;会出现hang住的情况。 问题 1、dpdk-lvs 已经在多个机房上线&…