软件测试--python控制流程和函数

本文详细介绍了Python中的条件语句(if-else)、while和for循环,包括它们的语法、示例以及break、continue等控制结构的运用。同时讲解了列表推导式、函数、参数传递、作用域以及匿名函数的概念。
摘要由CSDN通过智能技术生成

控制流程

1.判断语句

判断语句 对应的就是 如果 … 否则 …
条件成⽴ 做什么事, 条件不成⽴做什么事
很多的条件怎么处理

if elif else结构

  • 语法
# if elif else 如果 ... 如果 ... 否则 ....
# 多个如果之间存在关系
if 判断条件1:
   判断条件1成⽴,执⾏的代码
elif 判断条件2: # 判断条件1 不成⽴
   判断条件2成⽴,执⾏的代码
elif ....:
   pass
else:
   以上 判断条件都不成⽴,才会执⾏的代码
# 1, elif 是关键字, 后边需要冒号, 回⻋ 和缩进
# 2, if elif else 的代码结构, 如果某⼀个条件成⽴,其他的条件就都不再判断
  • 示例
x = 10

if x > 0:
    print("x是正数")
elif x < 0:
    print("x是负数")
else:
    print("x为0")
#输出:x是正数
if – else 的一种新用法

在java 或者其他语言中,有类似于(condition)?a :b 这样的语法,表示如果condition 为真,返回a,反之,返回b。我们称之为三元运算。但在Python中,则没有这样的表达,Python借助于 if- else 可以时间同样的效果。示例如下:

a,b两个数,a>b 返回’more’,否则,返回less
在这里插入图片描述
python 还有另一种写法:
在这里插入图片描述

Debug 调试代码

我们使⽤ debug 的⽬的, 认为就是查看代码的执⾏过程的。

  • 步骤
  1. 打断点

断点的意义是, debug 运⾏的时候, 代码会在断点出停下来不执⾏。
如果是想要查看代码的执⾏过程, 建议将断点放在第⼀⾏在代码 和⾏号之间 点击,出现的红⾊圆点 就是断点, 再次点击可以取消。

pycharm 软件存在⼀个问题, 想要 debug 运⾏,可能⾄少需要两个断点。
在这里插入图片描述

  1. 右键 DEBUG 运⾏
    在这里插入图片描述
  2. 单步执⾏,查看执⾏过程
    在这里插入图片描述

2. 循环语句

让指定的代码重复的执⾏。

1.while 循环

  • 语法
1. 循环的初始条件(计数器)
# 2. 循环的终⽌条件
while 判断条件:
   判断条件成⽴执⾏的代码
   判断条件成⽴执⾏的代码
   判断条件成⽴执⾏的代码
# 3. 计数器加1
# 1, 处于 while 缩进中的代码,称为是 while 的循环体
# 2, 执⾏顺序 1 2 3 2 3 2 3 2 3 2(条件不成⽴, 结束)
  • 案例 求 1- 100 之间的累加和
#1 + 2 + 3 + ... + 99 + 100
#使⽤循环产⽣ 1-100 之间的数字
# 1. 定义计数器
i = 1
# 定义变量 保存求和的结果
num = 0
# 2. 书写判断条件
while i <= 100:
# 求和
    num = num + i # 0 + 1 + 2 + 3 + ... + 100
    i += 1
# 求和的结果 只需要打印⼀次, 所以放在循环的外边
print('求和的结果为:', num)

3.for循环

for 循环 也称为是 for 遍历, 也可以做指定次数的循环
遍历: 是从容器中将数据逐个取出的过程.
容器: 字符串/列表/元组/字典

  • 语法
for 变量 in 字符串:
重复执⾏的代码
# 1, 字符串中存在多少个字符, 代码就执⾏多少次
# 2, 每次循环 会从字符串中取出⼀个字符保存到前边的变量中
# 3, for 和 in 都是关键字
  • 示例
numbers = [1,2,3,4,5]
for num in numbers:
    print(num)
  • 循环遍历字典元素
d={"x":1,"y":2,"z":3}
#遍历字典中的键
for key in d:
    print(key,"is",d[key])
    
#运行结果:
x is 1
y is 2
z is 3

d={"x":1,"y":2,"z":3,"a":11}
#遍历字典中的值
for value in d.values():
    print(value)
#运行结果:    
1
2
3
11

d={"x":1,"y":2,"z":3,"a":11}
#遍历键和值
for key,value in d.items():
    print(key,value)

# 运行结果:    
x 1
y 2
z 3
a 11
    

3.break跳出循环 :跳出并停止

numbers = [1,2,3,4,5]
for num in numbers:
    if num == 3:
        break
    print(num)
#输出:1 2

4.continue:跳出该次循环,并不停止循环

numbers = [1,2,3,4,5]
for num in numbers:
    if num == 3:
        continue
    print(num)
#输出:1 2 4 5

5.GET新技能–列表推导式

我们上面学习了 for 循环,利用 for,我们可以快速的构建列表,这就是我们将要将的列表推导式。先举个例子: 有个列表[1,2,3],我们要将他中的每个元素加1,组成另一个列表,常见做法如下:
在这里插入图片描述
我们用列表推导式用一行代码能起到同样的效果
在这里插入图片描述
[i+1 for i in a] 就一行代码起到了同样的作用。列表推导式能极大的简化代码,但是会增加可读性难度。其基本格式如下:

在这里插入图片描述
如上面的例子,要排除偶数,只对奇数操作,那么可以这样
在这里插入图片描述
如果对每个元素要进行的操作很复杂,那么可以传入一个函数,示例如下:
在这里插入图片描述

函数

定义

函数是一段可执行的代码,它将一些输入值转换为输出值,通过将代码逻辑封装在函数中,可以使代码更简洁、可
读性更好并且更易于维护。

函数的定义需要使⽤ 关键字 def, 单词 define

调用

1, 函数调⽤,就是使⽤ 多⾏代码的过程
2, 语法 函数名()

基本函数

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

greet() #调佣greet函数,输出“hello world!"

上面的例子,函数名为 greet,他实际上相当于一个变量,指向了函数体在内存中的位置。这样, greet 就代表了这个而函数体,代码中 greet是指这个函数对象,greet()才是调用这个函数。

我们可以把函数名赋值给一个变量,那么,这个变量就指向了该函数名所对应的函数。注意,函数名 hi 不加()只是表示这个 hi 是对应的是一个函数对象,而没有调用它,加上()才会执行函数语句块里的内容,看下面代码:
在这里插入图片描述
如果定义一个函数,暂时还不知道这个函数要实现什么功能,或者还不知道怎么写功能,可以用pass来代替语句块
在这里插入图片描述

带参数的函数

def greet(name):
    print("hello, "+name+"!")

greet("Alice") #调佣greet函数,输出“hello, Alice!"
greet("Bob") #调佣greet函数,输出“hello, Bob!"

在这个例子中,函数 greet 接受一个参数 name,并通过打印欢迎消息来使用它。在每次函数调用时,我们可以传入不同的参数值。

  1. 字符串,数字,元组都是不可变的,所以用他们做参数,在函数内部参数有任何变函数外的同名变量不会受影响,但如果可变元素则为参数,则…
    在这里插入图片描述

  2. 参数位置 在调用函数是,如果传入的参数值加上参数名称,则参数位置可调换,看下面代码示例
    在这里插入图片描述

  3. 默认参数 在定义函数时,可以给定传入参数的默认值,那么在调用函数时,可以不提供参数,或者部分提供,或者全部提供。定义函数的时候默认参数有值得注意的有两点:

  • 默认参数必须是不可变的
  • 默认参数必须在正常参数之后
    在这里插入图片描述
  1. 可变参数在Python 中,传入的参数个数可以是可变得,可以是1个,2个…可以是任意个。
    我们来举个例子,比如 打印出每次来访的人员名单,每次来的人员个数并不是一定的,
    在这里插入图片描述
    看示例虽然实现了功能,我们每次调用函数前都组装成一个列表作为参数传入,略显繁琐,python为我们提供了可变参数来解决类似的问题解决办法:
    在这里插入图片描述
    参数前加表示这个参数是可变参数,python 会自动把传进来的参数组装成一个元组。看示例
    在这里插入图片描述
    那么,我们之前的示例可以改为
    在这里插入图片描述
    5.关键字参数 可变参数是在函数调用时自动将传入的0个或者N个参数组装成一个 tuple,而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个 dict.可变参数是用 来表示,而关键字参数是用
    *来表示,看代码示例:
    在这里插入图片描述
    从上面例子我们可以看到,当我们不传任参数时,系统会认为我们传了一个空的dict,但我们传入1个或2个带参数名的参数时,系统会把所传入的参数组装成dict。
    举个实际的例子来说明关键字参数在实际中的应用:比如函数 print_person()打印人员信息,收集过来的信息除姓名和性别外必填,其他都是非必填,那么关键字参数是如何来实现这个功能的,我们看下面代码示例:
    在这里插入图片描述
    6.参数组合在python中定义函数,可以把正常参数,默认参数,可变参数,关键字参数组合使用,但顺序必须是 正常参数,默认参数,可变参数,关键字参数。
    定义一个包含所有参数的函数,并传入不同的参数调用
    在这里插入图片描述

在实际工作中不建议将太多的参数组合,会影响函数的理解性。

返回值的函数

def add(a,b):
    return a+b
result = add(3,5)
print(result) #输出:8

在这个例子中,函数 add 接受两个参数 a和b,并返它们的和。当我们调用函数 add 并将返回值赋给变量result 时,最终输出结果为8。

可以用Python 内置的 callable()函数来判定是否可以被调用

def hello(name):
    print('hello',name)
y = hello
print(callable(y))# 输出True

x = 1
print(callable(x))# 输出False

记录函数,给函数写注释在函数体内用"""或者’''给函数写注释

class Debug:
    """
    This is a class for debugging
    """
    def __init__(self):
    	"""
    	This funtion only has one property
		"""
        self.x = 5
        
        
# debug
main = Debug()
print(main.__doc__)  			# This is a class for debugging  
print(main.__init__.__doc__) 	# This funtion only has one property

__doc__方法是python的内置方法之一,该方法通常会输出指定对象中的注释部分,可以理解为对象的帮助文档。

Python中所有函数都有返回值,如果没有指定返回值,则默认为None

在这里插入图片描述

神秘的作用域

函数内的变量 被称为局部变量(与全局变量对应,全局变量可以暂时理解为 函数外的变量),参数的工作原理类似于局部变量。
函数内读取全局变量正常,但当函数内部的局部变量与全局变量同名时,函数内部对该变量的操作将仅影响局部变量,而不会影响全局变量。

  • 函数内 读取全局变量的方法 globals(['name].
    在这里插入图片描述
  • 屏蔽全局变量
    在这里插入图片描述
  • 重新绑定全局变量–在函数内声明一个变量,且这个变量是全局变量
    在这里插入图片描述
  • 嵌套–函数内定义函数
    在这里插入图片描述

没有名字的函数-- 匿名函数

我们上面介绍的函数都是通过 关键字 def +函数名()来定义的,那么,函数能不能没有名字,这样就不必担心函数名冲突了。
答案是肯定的,Python 中通过 lambda 关键字来定义匿名函数,匿名函数也是一个函数对象,也可以赋值给变量,在利用变量来调用函数。匿名函数示例如下:
在这里插入图片描述
表示这个函数接受两个参数x,y,并返回x-y
在这里插入图片描述
匿名函数对象赋值给了变量f,f指向了该函数,所以调用f(7,2)就是就是调用该匿名函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值