python函数二

不定长参数

* 参数

带有“*”参数,是指根据位置进行传递参数,输出格式是元组形式,“( )”
DEMO:

def fn_1(a,b,*c):
    print('a=',a)
    print('b=',b)
    print('c=',c)
fn_1(1,2,3,4,5)
'''
输出结果:
a= 1
b= 2
c= (3, 4, 5)
'''

** 参数

带有**参数,是指根据关键字参数进行传递参数,输出格式是字典形式,“{ }”
DEMO:

def fn_1(a,b,**c):
    print('a=',a)
    print('b=',b)
    print('c=',c)
fn_1(a=1,b=2,c=3,d=4,e=5)
'''
输出结果:
a= 1
b= 2
c= {'c': 3, 'd': 4, 'e': 5}
'''

综上所述,带有“*”和“**”都属于函数的不定长参数传值,区别对比:

***
输出格式为元组“( )”输出格式为字典“{ }”
根据参数位置进行传递参数根据关键字“=”进行传递参数

函数的返回值

python函数中,返回值一般使用return来指定函数的返回值
def 函数():
代码块
return 函数或者值…

def fn_2():
    return 1
r=fn_2()
print(r)
'''
结果是:
1
return将值“1”返回给函数fn_2(),然后再复制给r,最后输出r
'''

在函数中,代码在执行过程中一旦遇到return关键字,后面的所有代码将不再执行

函数的作用域

函数的作用域主要分为:

局部作用域

局部作用域主要是指在函数体中进行定义的变量
DEMO:

a = 1
def fn_3():
    a=2
    print('局部作用域 a =',a)
fn_3()
print('全局作用域 a =',a)
'''
输出结果:
局部作用域 a = 2
全局作用域 a = 1
a=2就是局部作用域,函数体内输出a的值就是局部作用域定义的(函数体内的)
'''

全局作用域

全局作用域是指在函数体外进行定义的变量
DEMO:

a = 1
def fn_3():
    a=2
    print('局部作用域 a =',a)
fn_3()
print('全局作用域 a =',a)
'''
局部作用域 a = 2
全局作用域 a = 1
a=1就是全局作用域,函数体外输出a的值就是全局作用域定义的(函数体外的)
'''

因此,作用域的优先级:局部作用域>全局作用域,如果有函数嵌套的时候,那么函数间的变量定义域就叫做函数间作用域,其优先级大于全局作用域,而小于局部作用域。

递归函数

递归函数就是在函数中自己调用自己,具有2个基本条件:基线条件(递归函数需要设定一个结束条件,无法会无线循环);递归条件(分解问题的条件,达到自己调用自己的目的满足要求)
DEMO:求4的阶乘和
分析:4!=2+3+2+1,当条件达到最小值1时,该递归函数结束

def fn_5(a):
    if a==1:#设置递归函数结束条件(基线条件)
        return 1
    return a+fn_5(a - 1)#实现递归,调用自身
r=fn_5(4)
print(r)
'''
输出结果:
10
'''

建议:在用递归函数时,能用循环实现的尽量使用循环来做,因为递归函数效率比较低

python检查字符是否是回文,例如TNT

a = 'abaa'
b = a[::-1]
if a ==b:
    print('是回文')
else:
    print('不是回文')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值