函数参数的类型

参数

位置参数

函数调用时,实参数默认按位置顺序传递,需要和个数和形参匹配,按位置传递的参数,成为“位置参数”

// An highlighted block
def test01(a,b,c):
    d=a*b*c
    print(d)

#test01(20,30)  #形参和实参的个数需要对应,不然会出错
test01(20,30,40)

在这里插入图片描述

默认值参数

参数在传递时可选,必须放在普通参数的后边。

// An highlighted block
def test01(a,b,c=40,d=50):
    print(a,b,c,d)

test01(20,30)     #这时传递的是a,b的值
test01(20,30,70)  #这时传递的是a,b,c的值

在这里插入图片描述

命名参数

形参的名称传递参数

// An highlighted block
def test01(a,b,c):
    print(a,b,c)

test01(8,9,10)     #位置参数
test01(b=9,a=8,c=10)  #命令参数,位置可以改变

在这里插入图片描述

可变参数

可改变数量的参数,将多个参数收集到一个“元组”,“字典”对象中。

  1. *param “元组”
  2. **param “字典”
// An highlighted block
def test01(a,b,*c):
   print(a,b,c)

def test02(a,b,**c):
   print(a,b,c)

test01(8,9,100,200)     #元组
test02(8,9,name='一个小白的日常',age=24)     #字典

在这里插入图片描述

lambda表达式和匿名函数

用来声明匿名函数,生成一个函数对象。只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是一个函数的返回值。
基本语法: lambda arg1,arg2,arg3…:<表达式>
arg1,arg2,arg3为函数的参数。
<表达式>相当于函数体,运行结果:表达式的运算结果。

// An highlighted block
f=lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))

在这里插入图片描述

eval()函数

将字符串str当成有效表达式来求值并计算返回结果
基本语法:eval(source[,globals[,locals]])->value
source:一个python表达式或函数compile()返回的代码对象。
globals:可选,必须是dictionary.
locals:可选,任意映射对象。

// An highlighted block
s="print('abc')"
eval(s)    #执行输出语句
s="print('一个小白的日常')"
eval(s)    #当参数变得时候,也会跟着改变

a=10
b=20
c=eval("a*b")
print(c)        #执行乘法运算

dict1=dict(a=100,b=200)
d=eval("a*b",dict1)
print(d)           #执行元组的参数的乘法运算

在这里插入图片描述

递归函数

自己调用自己的函数

  1. 终止条件:表示递归什么时候结束,一般用于返回值,不再调用自己。
  2. 递归步骤:把第n步的值和第n-1步相关联。

递归函数由于会创建大量的函数对象,过量的消耗内存和运算能力。在处理大量数据时,谨慎使用。

// An highlighted block
def test01(n):
    print("test01:",n,end="\t")
    if n==0:         #当n为0时,整个调用停止
        print("over")
    else:             #控制调用次数n在一定范围就结束
        test01(n-1)
    print("test01***",n,end="\t")     #不参与递归调用,就是普通调用

test01(5)  

在这里插入图片描述

练习:递归实现阶乘

// An highlighted block
'''练习阶乘'''
def factional(n):
    if n==1:
        return 1    #求1的阶乘时,直接返回1
    else:
        return n*factional(n-1)          #不为1时,则通过调用求阶乘

for i in range(1,6):
    print(i,"!=",factional(i),end='\t')              #1-5的阶乘

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值