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

news2024/11/16 5:43:25

我们昨天说了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/136889.html

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

相关文章

操作系统——进程之处理机调度

操作系统——进程之处理机调度一、处理机调度的本概念和层次1、高级调度&#xff08;作业调度&#xff09;2、中级调度&#xff08;内存调度&#xff09;3、低级调度&#xff08;进程调度&#xff09;二、进程调度的时机、切换与过程、方式1、进程调度的时机2、进程调度的方式3…

ATAC-seq分析:比对(3)

1. 质控 在比对之前&#xff0c;我们建议花一些时间查看 FASTQ 文件。一些基本的 QC 检查可以帮助我们了解您的测序是否存在任何偏差&#xff0c;例如读取质量的意外下降或非随机 GC 内容。 2. Greenleaf 在本节中&#xff0c;我们将稍微处理一下 Greenleaf 数据集。 我们将处理…

新一代OPC UA解决方案,快速实现IT与OT融合

一、OPC数据采集难题 OPC技术在现今的工业自动化中应用越来越广泛&#xff0c;为现场工业控制设备与控制软件之间的数据交换提供了统一的数据存储规范。但随着工业的不断发展&#xff0c;OPC数据采集出现了一些难题。例如&#xff0c;在传统OPC在远程连接时候一定会面临的DCOM…

Qt扫盲-Qt Designer配置QSS交互使用

Qt Designer配置QSS交互记录一、概述二、用法1. 选择2. 修改1. 菜单区2. 编辑区3. 在底部功能区4. 查询一、概述 Qt Designer {Qt Designer }是一个很好的工具来预览样式表、设置样式的效果&#xff0c;而且是所见即所得&#xff0c;用界面这种开发更快些。 我一般是在Qt Des…

【编译基础】new delete详解及内存泄漏

内存的使用&#xff0c;一文不太够 文章目录C语言1.new关键字2.delete关键字C语言1.malloc关键字2.free关键字区别内存泄漏参考博客&#x1f60a;点此到文末惊喜↩︎ C语言 1.new关键字 作用&#xff1a;C通过new关键字动态分配内存三种用法 plain new&#xff1a;最朴素的n…

JdbcUtils工具类的优化升级——通过配置文件连接mysql8.0

我之前的博文JDBC重构——JdbcUtils工具类的封装写了一个JdbcUtils的工具类&#xff0c;但是这个类也会有一个问题&#xff1a;如下图所示&#xff1a;连接数据库的代码在java中是写死的&#xff0c;如果我们想要换一个数据库进行连接&#xff0c;就会很麻烦&#xff0c;这时我…

嵌入式HLS 案例开发手册——基于Zynq-7010/20工业开发板(2)

目 录 2 led_flash 案例 19 2.1 HLS 工程说明 19 2.2 编译与仿真 20 2.3 IP 核测试 23 3 key_led_demo 案例 23 3.1 HLS 工程说明 23 3.2 编译与仿真 25 3.3 IP 核测试 27 前 言 本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows 7/10 64bit、Xilinx Vivado…

从零搭建的前后端完整的直播网页方案

前言&#xff1a;由于前段时间刚租了台服务器打算自己玩玩&#xff0c;随想首页或者哪哪个页面挂个我个人的直播间应该还挺有趣的。遂探索如何在我的网站上弄一个直播。三下五除二&#xff0c;清清爽爽&#xff0c;看完此文5分钟即可直播。 整体思路 最简单直观的图解。 由上图…

VB2019创建、使用静态库(同样的使用动态库dll)

库&#xff1a; 二进制可执行文件&#xff0c;操作系统载入内存执行&#xff0c;将不怎么更改的底层打包成库后可以使整体编译更改&#xff0c;并且实现对底层的保密&#xff08;不对外或员工开放&#xff09;。库有两种&#xff1a;静态库&#xff08;.a、.lib&#xff09;和动…

【国科大模式识别】第二次作业(阉割版)

【题目一】最大似然估计也可以用来估计先验概率。假设样本是连续独立地从自然状态 ωi\omega_iωi​ 中抽取的, 每一个自然状态的概率为 P(ωi)P\left(\omega_i\right)P(ωi​) 。如果第 kkk 个样本的自然状态为 ωi\omega_iωi​, 那么就记 zik1z_{i k}1zik​1, 否则 zik0z_{i…

【无标题】测试新发文章

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Spring之后处理器

目录 一&#xff1a;概述 二&#xff1a;案例演示 三&#xff1a;Bean的后处理器----BeanPostProcessor 案例&#xff1a;对Bean方法进行执行时间日志增强 四&#xff1a;Spring ioc整体流程总结 一&#xff1a;概述 Spring的后处理器是Spring对外开发的重要扩展点、允许我…

量子计算机是什么?量子计算机和传统计算机之间有什么区别?

1.突破1000量子比特大关&#xff01; 2022年11月9日的IBM年度量子峰会上&#xff0c;IBM宣布了Osprey在量子硬件和软件方面取得的突破性进展&#xff0c;同时推出了“鱼鹰”&#xff08;Osprey&#xff09;芯片。“鱼鹰”是全球迄今为止量子比特最多的量子计算机&#xff0c;而…

软考初级信息处理

软考初级信息处理技术员还是比较简单的&#xff0c;只要多刷题&#xff0c;实操也很重要的&#xff01;备考时间讲究高效哦&#xff01; 1、考试安排&#xff1a; 2、关于信处的考点分析&#xff1a; 上午考试&#xff1a; 下午考试&#xff1a; 3、信处如何备考&#xff1a;…

从spark WordCount demo中学习算子:map、flatMap、reduceByKey

文章目录spark map和flatMap应用&#xff1a;Word CountreduceByKey的用法spark map和flatMap val rdd sc.parallelize(List("coffee panda","happy panda","happiest panda party"))&#xff08;1&#xff09;map rdd.map(_.split(" &q…

windows terminal 还是 cmder ?

前景提要 windows terminal自带的没有tab命令自动补全, cmd的自动补全垃圾; cmder虽然有自动补全, 但是界面管理不太行; 而且比较复杂&#xff1b;只想要其UI和路径换行显示; windows terminal 应用商城或https://github.com/microsoft/terminal 下载页 https://github.com/mic…

【算法刷题】哈希表题型及方法归纳

哈希表特点 常见的三种哈希结构&#xff1a; 1、数组&#xff1a;操作简单&#xff0c;方便快捷&#xff0c;但不适于进行一些更复杂的操作。 注&#xff1a;适用于用set或map的情景&#xff1a;&#xff08;1&#xff09;当数组大小受限&#xff1b;&#xff08;2&#xff0…

powerquery 连接 postgresql

1下载安装postgresql的驱动器 https://pan.baidu.com/s/1ii9PudUs9WL_clP7Ub647Q 提取码&#xff1a;hm6g 2 安装配置odbc 2.1打开控制面板 – 选择管理工具 2.2选择ODBC数据源(64位) 2.3控制面板搜索数据源-单击添加 选择postgresql unicode 2.4配置数据源信息 3.通过e…

einsum 理解

本文是参考以下两篇文章&#xff0c;再结合我自己的经验完成的&#xff1a; 文章一&#xff1a;https://zhuanlan.zhihu.com/p/358417772 文章二&#xff1a;https://zhuanlan.zhihu.com/p/27739282 Einsum介绍&#xff1a; 给定矩阵A 和矩阵B &#xff08;在Python中也可以说是…

【PCB专题】PCB板卡上的UL标识是什么?

PCB行业中重要的认证之一是UL认证。在网上直接搜索UL会出现很多与防火、安全、保险相关的词汇出现。