ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

函数与Lambda表达式

2021-02-07 19:59:17  阅读:143  来源: 互联网

标签:10 函数 fun 表达式 print 实参 def Lambda


函数参数定义

# 学习人员:贾其豪
# 开发时间:2021/1/31 14:05

#函数定义默认值参数
#函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
def fun(a,b=10): #b称为默认值参数
    print(a,b)

#函数的调用
fun(100)
fun(20,30)

'''
个数可变的位置参数
定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的未知参数
使用*定义个数可变的位置形参
结果为一个元组
个数可变的关键字形参
定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
使用**定义个数可变的关键字形参
结果为一个字典
'''

#个数可变的位置参数,只能定义一个
def fun(*args):
    print(args)

fun(10)
fun(12,23,34,45,)

#个数可变的关键字形参,只能定义一个
def fun1(**args):
    print(args)

fun1(a=12)
fun1(b=23,c=34,d=45)

'''在一个函数的定义过程中,既有个数可变的关键字形参,又有个数可变的位置形参,
要求,个数可变的位置形参放在个数可变的关键字形参前面'''
def fun2(*args1,**args2):
    pass

'''def fun3(**args1,*args2): #报错
    pass'''

函数参数传递

# 学习人员:贾其豪
# 开发时间:2021/1/31 13:23
'''位置实参:根据形参对应的位置进行实参传递
关键字实参:根据形参名称进行实参传递'''
def calc(a,b): #a,b称为形式参数,简称形参,形参的位置是在函数的定义处
    c=a+b
    return c
#位置实参
result=calc(10,20) #10,20称为实际参数,简称实参,实参的位置是在函数的调用处
print(result)
#关键字实参
result=calc(b=10,a=20) #=左侧的变量名称叫做关键字
print(result)

函数参数总结

# 学习人员:贾其豪
# 开发时间:2021/1/31 14:27
def fun(a,b,c):
    print('a=',a)
    print('b=',b)
    print('c=',c)

#函数的调用
fun(10,20,30)
lst=[11,22,33]
#fun(lst) #报错
fun(*lst) #在函数调用时,将列表中的每个元素都转化为位置实参传入

fun(a=100,b=200,c=300)
dic={'a':100,'b':200,'c':300}
#fun(dic) #报错
fun(**dic) #在函数调用时,将字典中的键值对转换为关键字实参传入

def fun1(a,b,*,c,d):#在*之后只能用关键字传参
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)

fun1(12,23,d=22,c=21)

#函数定义是的形参的顺序问题
def fun2(a,b,*,c,d,**args):
    pass
def fun3(*args,**args2):
    pass
def fun4(a,b=10,*args1,**args2):
    pass

函数的创建和调用

# 学习人员:贾其豪
# 开发时间:2021/1/31 13:08
'''函数就是执行特定功能的一段代码
优点:
复用代码
隐藏实现细节
提高可维护性
提高可读性便于调试'''

'''函数的创建:def 函数名([输入参数])
                 函数体
                 [return XXX]'''
def calc(a,b):
    c=a+b
    return c
result=calc(10,20)
print(result)

函数参数传递内存变化

# 学习人员:贾其豪
# 开发时间:2021/1/31 13:35
def fun(arg1,arg2):
    print('arg1',arg1)
    print('arg2',arg2)
    arg1=100
    arg2.append(10)
    print('arg1', arg1)
    print('arg2', arg2)

n1=11
n2=[22,33,44]
print('n1',n1)
print('n2',n2)
fun(n1,n2)
print('n1',n1)
print('n2',n2)
#在函数调用过程中,进行参数的传递
#如果是不可变对象,在函数体的修改不会影响实参的值
#如果是可变对象,在函数体的修改会影响到实参的值

变量的作用域

# 学习人员:贾其豪
# 开发时间:2021/1/31 14:49
'''
变量的作用域
程序代码能访问该变量的区域
根据变量的有效范围可分为:
局部变量:在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量就会变成全局变量
全局变量:函数体外定义的变量,可作用于函数内外
'''
def fun(a,b):
    c=a+b #a,b,c都相当于是局部变量
    print(c)

#print(c)  #a,c超出了起作用的范围(作用域)
#print(a)

name='杨老师' #name的作用范围在函数内外都可以起作用,是全局变量
print(name)
def fun2():
    print(name)

fun2()

def fun3():
    global age #age的作用范围是全局
    age=20
    print(age)

fun3()
print(age)

函数的返回值

# 学习人员:贾其豪
# 开发时间:2021/1/31 13:54
def fun(num):
    odd=[]
    even=[]
    for i in num:
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even

#函数的调用
lst=[10,29,34,23,44,53,55]
print(fun(lst)) #输出多个值会以元组类型输出

'''
函数的返回值
1.如果函数没有返回值(函数执行完毕后,不需要给调用处提供数据),return可以省略不写
2.函数的返回值,如果是1个,直接返回类型
3.函数的返回值,如果是多个,返回的结果是元组
'''

递归函数

# 学习人员:贾其豪
# 开发时间:2021/1/31 15:02
'''
什么是递归函数:如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数
递归的组成部分:递归调用与递归终止条件
递归的调用过程:每递归调用一次函数,都会在栈内存分配一个栈帧
            每执行完一次函数,都会释放相应的空间
递归的优缺点:缺点:占用内存多,效率低下
           优点:思路和代码简单
'''
#使用递归计算阶乘
def fac(n):
    if n==1:
        return 1
    else:
        res=n*fac(n-1)
        return res
print(fac(6))


#斐波那契数列
def fib(n):
    if n==1 or n==2:
        return 1
    else:
        res=fib(n-1)+fib(n-2)
        return res

print(fib(6))

#输出前六位上的数字
for i in range(1,7):
    print(fib(i))

标签:10,函数,fun,表达式,print,实参,def,Lambda
来源: https://blog.csdn.net/weixin_49604185/article/details/113746414

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有