Python全栈自动化测试-Python基础10--函数

目录

前言

一、函数注释

二、函数嵌套

三、作用域函数

四、数学函数

五、匿名函数

    1.匿名函数的使用

    2.匿名函数结合内置函数使用

    3.序列调用匿名函数

    4.匿名函数配合内置函数map使用

六、函数的引用和调用

总结


前言

在编程中,Python以其简洁的语法和强大的功能库,成为了众多开发者的首选语言。而函数,作为Python编程中的基础构建块,其重要性不言而喻。此文将带大家探索Python函数的奥秘。无论是函数的定义、调用,还是参数的传递、作用域的理解,我们都将一一剖析。


一、函数注释

函数的注释 -- 与普通的注释区别,他是用来说明当前函数(参数)的含义

:param 参数: -- 说明这个参数的含义
:return: 返回这个函数执行之后的结果
通过这样的方式再调用函数的时候可以直观的理解这个函数(参数)的作用

def fun1(name):
  """
  :param name: name是你要输入的个人姓名
  :return: 返回这个name被校验后的结果True、False
  """
  bol = False
  if name == "python":
    bol = True
  return bol
print(fun1("python"))

#>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#True

二、函数嵌套

一个函数的内部可以嵌套另一个函数

在pycharm控制台里面,经常会出现print和log的顺序是混乱的
原因:因为print和log的输出,是并向的,两者互不干涉,谁先谁后不一定

# 两个同级别的函数,可以相互调用
def fun1():
    print("函数1")
def fun2():
    fun1()
    print("函数2")
fun2()
#>>>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
# 函数1
# 函数2

# python中,函数内部还可以定义函数,不仅可以定义,还可以直接调用
def fun3():
    print("函数3")
    def fun4():
        print("函数4")
    fun4()
fun3()
#>>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#函数3

三、作用域函数

作用域:我们定义的变量和函数在哪个范围是生效的
函数内部定义的东西,不能在文件中直接使用的,哪怕是同一个文件也不行
变量:
    全局变量:在当前文件内定义的变量,可以在文件内任何地方生效
    局部变量:在有效范围内可以调用,出了这个范围就不生效了
    局部变量在定义的时候,是可以直接声明为全局变量

# 局部变量
def fun1():
    a = 10
print(a)
#>>>>>>>>>>>>>>>>>>>
#输出结果:
#NameError: name 'a' is not defined -- a的作用域只局限于这个fun1

# 声明局部变量
a = 10
def fun2():
    print(a + 5)
fun2()
#>>>>>>>>>>>>>>>>>>>>>>>
# 输出结果:
# 15

# 全局变量
def fun3():
    global c  # 一定要先声明,再去赋值
    c = 4
fun3()
print(c)
#>>>>>>>>>>>>>>>>>>>>>>>
# 输出结果:
# 4

# 循环内部是可以直接使用的
aa = 1
while True:
    aa = 10  # 注:如果在循环内部重新定义这个变量,那么这个全局变量的值就被改变了
    break
print(aa)
#>>>>>>>>>>>>>>>>>>>>>>>
# 输出结果:
# 10

四、数学函数

数学函数(只要会用):abs() 绝对值、divmod() 返回商和余数、round() 四舍五入[银行家算法]、pow() 次方、sum() 求和、min() 最小值、max() 最大值

# 绝对值
res = abs(-1)
print(res)  # 1

# 返回商和余数
a, b = divmod(5, 2)  # 传入两个参数,一个表示被除数,另一个是除数
print("商数:", a)  # 2
print("余数:", b)  # 1

# 四舍五入[银行家算法],奇数:四舍五入,偶数:直接舍弃,这个规则,只在0.5区间生效
print(round(1.5))  # 2
print(round(2.5))  # 2
print(round(3.5))  # 4
print(round(4.5))  # 4

# 次方
res = pow(10, 2)
print(res)  # 100

# 求和
lst1 = [1, 2, 3, 4, 5, 6, 7]
print(sum(lst1))  # 28
# 最大值
print(max(lst1))  # 7
# 最小值
print(min(lst1))  # 1

五、匿名函数

匿名是什么,匿名就是指没有名字,我们在写程序的过程中有时不需要给函数命名,这时候就可以使用匿名函数,我们在Python中使用lambda表达式来使用匿名函数。
lambda匿名函数的语法如下:
        • lambda [arg1 [,arg2,.......argn]]:expression
参数说明:
        • args指的是参数,可以写多个参数,参数与参数之间用逗号隔开;
        • expression指条件表达式,表达式只能写一个;
        • 该表达式的结果就是返回值,不需要用return关键字,返回值可以用变量来接收;
        • 当匿名函数赋值给一个变量,调用匿名函数时,使用变量名(参数值1,参数值2..)方式来实现。

    1.匿名函数的使用

语法:
lambda larg1 [,arg2,.......argn]]:expression

# 输入任意一个数字,要求返回该数字的平方,用函数方式来实现
# 普通函数实现
def fun1(m):
    return m * m
print('普通函数调用,结果显示:', fun1(2))
#>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#普通函数调用,结果显示: 4

# 匿名函数实现
res = lambda m: m * m
print('匿名函数调用,结果显示:', res(3))
#>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#普通函数调用,结果显示: 9

    2.匿名函数结合内置函数使用

内置函数sum(),max(),min(),匿名函数结合内置函数一起使用

# 使用匿名函数求列表[10,20,30]中所有元素的和,列表中的最大值及列表中的最小值
lst = [10, 20, 30]
res1 = lambda x: sum(x)
print('和:', res1(lst))
#>>>>>>>>>>>>>>>
#输出结果:
#和: 60
res2 = lambda y: max(y)
print('最大值:', res2(lst))
#>>>>>>>>>>>>>>>
#输出结果:
#最大值: 30
res3 = lambda z: min(z)
print('最小值:', res3(lst))
#>>>>>>>>>>>>>>>
#输出结果:
#最小值: 10

    3.序列调用匿名函数

我们在序列中同样可以使用匿名函数,使用匿名函数可以帮助我们进行很快的数据筛选。
提示:使用内置函数filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
语法:filter(function, iterable)
  • 接收两个参数,参数function为函数,iterable为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中。

# 案例:已知一个列表为[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99],找出元素值为偶数的数据,并存放在列表当中

lst = [1, 4, 6, 9, 12, 23, 25, 28, 36, 38, 41, 56, 63, 77, 88, 99]
# 方式一:用普通函数找出元素值为偶数的数据
def fun1(num):
    if num % 2 == 0:
        return num
print(list(filter(fun1, lst)))
#>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#[4, 6, 12, 28, 36, 38, 56, 88]

# 方式二:用匿名函数来实现
print(list(filter(lambda x: x % 2 == 0, lst)))
#>>>>>>>>>>>>>>>>>>>>>>>
#输出结果:
#[4, 6, 12, 28, 36, 38, 56, 88]

    4.匿名函数配合内置函数map使用

map() 映射函数:会根据提供的函数对指定序列做映射。
语法:map(function,iterable,......)
  会根据提供的括号内函数对给出的序列做一一映射
  function为所指定的函数,iterable为所提供的序列,可为多个序列。

# 案例:计算列表[1,2,3,4,5]中每个元素的平方,返回新列表
lst = [1, 2, 3, 4, 5]
# 方式一:用普通函数实现
def fun1(m):
    return m * 2
print(list(map(fun1, lst)))
#>>>>>>>>>>>>>>>>>>
#输出结果:
#[2, 4, 6, 8, 10]

# 方式二:用匿名函数来实现
print(list(map(lambda x: x * 2, lst)))
#>>>>>>>>>>>>>>>>>>
#输出结果:
#[2, 4, 6, 8, 10]

六、函数的引用和调用

python中可以把函数当做变量传递,这种情况下,可以直接调用被传入的函数

函数的引用 和 调用:
        调用:函数的本体() -- 要运行这个函数里面的代码
        引用:只有函数的名称[函数的本体],对应的是这个函数在内存中的地址

注:引用加上小括号,就可以调用函数,如果是调用,去掉小括号,就变成引用

# 引用和调用的场景:
def fun1():
    print("执行fun1函数")
# 如果希望执行这个函数
fun1()
#>>>>>>>>>>>>>>>>>>>>>>>>>
# 输出结果:
# 执行fun1函数


# 可以加一些条件,来去判断,是否需要执行fun1函数
def fun2(x):
    print("什么时候想执行这个fun1,那么就去调用他")
    name = input("是否需要执行fun1函数")
    if name == 'yes':
        x()
fun2(fun1)
#>>>>>>>>>>>>>>>>>>>>>>>>
# 输出结果:
# 什么时候想执行这个fun1,那么就去调用他
# 是否需要执行fun1函数:yes
# 执行fun1函数

总结

通过此文,从函数的定义到调用,从参数的传递到作用域的理解,我们一步步了解了Python函数。希望这篇文章能提供实用的知识和技巧,在编程实践中更加得心应手。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值