龙空技术网

Python语言学习(十一)函数参数的定义及使用详解(II)

双鱼座的程序猿 190

前言:

现在姐妹们对“python计算数字n阶乘”大体比较珍视,各位老铁们都需要剖析一些“python计算数字n阶乘”的相关文章。那么小编也在网上收集了一些对于“python计算数字n阶乘””的相关内容,希望大家能喜欢,朋友们快快来学习一下吧!

函数参数的定义(个数可变的位置形参)

【个数可变的位置参数】    1)自定义函数时,可能无法事先确定传递的位置实参的个数时(需要根据实际情况来),这种情况就需要使用可变的位置参数。    (2)使用 * 定义个数可变的位置形参    3)返回值结果为一个元组
# 函数定义时 可变的位置参数 只能是1个参数def fun(*args):    print(args)fun(10)fun(10,20,30)
函数参数的定义(个数可变的关键字形参)
【个数可变的关键字形参】    1)自定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参。    2)使用 ** 定义个数可变的关键字形参。    3)返回值结果为一个字典
# 可变的关键字参数 只能是1个参数def fun1(**args):    print(args)fun1(a=10)fun1(a=10,b=20,c=30)def fun2(*agrs1,**args2):    pass'''def fun3(**args1,*args2):    pass在一个函数的定义过程中,既有个数可变的位置形参,又有个数可变的关键字形参:【个数可变的位置形参必须放在个数可变的关键字形参前定义】'''
函数的参数详解
# 自定义列表数据lst = [11,22,33]# 直接调用函数传递列表 TypeError: fun() missing 2 required positional arguments: 'b' and 'c' 函数缺少2个必须的位置参数# fun(lst)# * 表示在函数调用时,将列表中的每个元素都转换为位置实参传入fun(*lst)# 关键字实参调用函数fun(a=100,b=300,c=200)# 自定义字典数据dic= {'a':111,'b':222,'c':333}# 直接调用传参 TypeError: fun() missing 2 required positional arguments: 'b' and 'c' Fun()缺少2个必需的位置参数:'b'和'c'# fun(dic)fun(**dic)# 自定义函数 【c,d两个参数只能采用关键字实参传递】def fun(a,b,*,c,d):    print('a=',a,'\t','b=',b,'\t','c=',c,'\t','d=',d)# TypeError: fun() takes 2 positional arguments but 4 were given 【fun()接受2个位置参数,但给出了4个】# fun(10,20,30,40)fun(10,20,c=30,d=40)# 函数定义时的形参的顺序def fun(a,b,*,c,d,**args):    passdef fun(*args,**args1):    passdef fun(a,b=10,*args,**args1):    pass
变量的作用域
1)程序代码能够访问该变量的区域称为变量的作用域;2)根据变量的有效范围划分:     a)局部变量:在函数内定义并使用的变量,只在函数内部有效;局部变量使用 global 声明, 这个变量就会变成全局变量。     b)全局变量:函数体外定义的变量,可作用于函数内外
# 自定义函数  【函数体内定义的变量c称为局部变量;a,b函数的形参,作用范围也是函数内部,相当于局部变量】def fun(a,b):    c = a+b    print(c)# 函数体内定义的变量值 使用global声明,就变成了全局变量def fun3():    global age    age = 18    print('函数体内输出变量值:',age)fun3()print('函数体外输出变量值:',age)# 函数体外直接调用局部变量 【NameError: name 'a' is not defined 提示:变量'a'没有定义】# print(a)# 自定义一个全局变量(函数内部和外部都可以使用)name = '张三'print('自定义原始变量值:',name)def fun1():    print('函数体内输出自定义的全局变量:',name)fun1()
递归函数
【什么是递归函数?】    在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数。【递归函数的组成部分】    递归调用与递归终止条件【递归的调用过程】    每递归调用一次函数,都会在栈内存分配一个栈帧;    每执行完一次函数,程序都会释放对应的空间。【递归的优缺点】    缺点:内存再用多,效率低    优点:代码简单    

使用递归计算阶乘

# 自定义函数计算阶乘def fac(n):    if n == 1:        return 1    else:        return n*fac(n-1)print('计算阶乘:',fac(6))
斐波那契数列
# 自定义函数计算 斐波那契数列def fib(n):    if n == 1:        return 1    elif n == 2:        return 1    else:        return fib(n-1)+fib(n-2)print('求第N位上的斐波那契数列值:',fib(6))# 输出斐波那契数列前N位的值for i in range(1,7):    print('输出斐波那契数列前N位的值',fib(i))

标签: #python计算数字n阶乘