AI智能
改变未来

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= 1b= 2c= (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= 1b= 2c= {\'c\': 3, \'d\': 4, \'e\': 5}\'\'\'

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

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

函数的返回值

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

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

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

函数的作用域

函数的作用域主要分为:

局部作用域

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

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

全局作用域

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

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

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

递归函数

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

def fn_5(a):if a==1:#设置递归函数结束条件(基线条件)return 1return 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(\'不是回文\')
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » python函数二