zoukankan      html  css  js  c++  java
  • 函数基础

    函数基础:

    def diedai(iter):    #iter可以换成a(参数名可以随便填)
        for i in iter:   #函数定义,命名:驼峰规程,dieDai(a)
            print(i)

    #参数形式:可选参数,必备参数,默认参数,不传参数

    def fun1():
        print('不能传参数')
    
    #必备参数
    def fun2(a):
        print('必须传参数:',a)
    
    调用结果:
    fun2(2)
    必须传参数: 2
    
    
    #=默认参数            #可以指定默认参数,参数可传可不传
    def fun3(b=2):
        print('默认参数:',b)
    
    fun3()
    默认参数: 2
    
    fun3(b=1)
    默认参数: 1
    
    fun3()
    默认参数: 2
     

    #可选参数

    def fun4(*arg):
        print('可传0个到多个:',arg)
    
    fun4()
    可传0个到多个: ()
    fun4(1)
    可传0个到多个: (1,)    #元组只有一个数要加逗号
    fun4(1,2,3,4,5)
    可传0个到多个: (1, 2, 3, 4, 5)
    
    
    fun4([1,2])
    可传0个到多个: ([1, 2],)
    
    fun4((1,2))
    可传0个到多个: ((1, 2),)
    
     fun4({1:11})
    可传0个到多个: ({1: 11},)  #总结:都把它当成一个元素,并且把它包装成元组!
    
    
    fun4(*[1,2])             #加个#,就把里面的壳去掉,解包
    可传0个到多个: (1, 2)
    fun4(*{1:11})           #可以把键取出来
    可传0个到多个: (1,)

    #关键字参数

    def fun5(a,b):   #=定义的时候是跟必备参数一样的
        print(a,b)   #必须放最后
    
    fun5(a=1,b=2)
    1 2

    fun2(a=3):
    必须传参数:3
    def fun6(**kwarg):
        print('关键字参数',kwarg)   #包装成字典
    
    fun6(a=1,b=2)
    关键字参数 {'b': 2, 'a': 1}   #包装成字典,可传0个到多个
    
    fun6()
    关键字参数 {}   #空字典
    fun6(**{'a':1})             #这样形式写keyward必须是字符串
    关键字参数 {'a': 1}

    #参数混合时

    def fun7(a=1,b):   #non-default默认参数
        print(a,b)
    报错:#必备参数+默认参数,默认参数要放在必备参数后面
    
    def fun7(a,b=1):   
        print(a,b)
    
    fun7(1,b=2)
    1 2
    #参数混合时,关键字参数放最后(以"="形式出现)
    
    fun7(a=1,b=2)    #必备参数可以加"="   
    1 2
    
    fun7(1,2)
    1 2
    
    fun7(2,a=1)
    报错:2已经是必备参数,又来一个必备参数,关键字参数放后面,根据定义顺序确保必备参数只能拿到一个值
    def fun8(b,m=1,*a):
        print(b)
        print(m)
        print(a)
    
    fun8(1,m=1,1,2,3,4,5)   #报错,m=1是关键字参数要放最后
    
    fun8(1,1,2,3,4,5,m=1)   #报错
    
    fun8(1,1,2,3,4,5)
    1
    1
    (2, 3, 4, 5)
    
    
    def fun8(*a,b,m):
        print(a,b,m)
    
    
    fun8(1,2,3,b=1,m=2)
    (1, 2, 3) 1 2
    def fun8(b,m=1,*a):
    print(b) print(m) print(a) 错误输入情况: fun8(1,m=1,1,2,3,4) #错误原因:因为关键字参数m=1必须放最后 fun8(1,1,2,3,4,m=1) #错误原因:因为根据定义顺序,先是第二位定义了一个m=1,最后面又定义了一个m=1,重复定义 正确输入: fun(1,2,3,4,5)

    输出结果:

    def fun9(*a,b,m):
    print(a,b,m)
    正确输入:
    fun9(1,2,3,b=1,m=2)
    输出结果:
    复制代码
    复制代码
    def fun11(a,b=1,*arg,**kwarg):
        print('这是必备参数:',a)
        print('这是默认参数:',b)
        print('这是可选参数(不定长参数)',arg)
        print('这是关键词参数',kwarg)
        return 'OK'
    
    正确输入:fun11(1,2,1,2,3,x=1,y=2,z=3)
    输出结果:
                 
    或者
    def fun11(a,*arg,b=1,**kwarg):
        print('这是必备参数:',a)
        print('这是默认参数:',b)
        print('这是可选参数(不定长参数)',arg)
        print('这是关键词参数',kwarg)
        return 'OK'
    
    正确输入:fun11(1,1,2,3,b=3,x=1,y=2,z=3) #b的位置可以在字典的前后
    输出结果:
    复制代码

     #return     作用:返回函数运行结果

    def fun1(a,b):
        if a>b:
            return a
    
    fun1(2,1)
    2
    a=fun1(2,1)
    a
    2
    
    def fun1(a,b):
        if a>b:
            print(a)
    
     fun1(2,1)
    2
    b=fun1(2,1)
    2
    
    print(b)
    None
    #fun1和fun2的区别是若将a=fun1(2,1),a=2;b=fun2(2,1),b=None
    return返回了fun1的运行结果
    def fun10(a,b):
    #    return('我不下去')
    
        if a>b:
            print(a)
            
    加return('我不下去了')      
    fun10(2,1)
    '我不下去了'                   #return,函数结束标志,可以放在任何地方。把return放到最后,先打印2,再打印'我不下去了'。
     
    不加return语句
    fun10(2,1)
    2

    #lanbda函数,匿名函数

    g=lambda x:x+1
    
    g(1)
    2
    
    g
    <function <lambda> at 0x01733C90>

      fun()是一个函数,fun就是一个函数体

    复制代码
    lambda函数就是没有函数名的函数

    g=lambda x:x+1 等同于: def g(x): return(x+1)

    lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解
    复制代码

      应用场景:
        1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要用def 来定义,这个时候就可以用lambda。
        2.函数都支持函数作为参数,lambda 函数就可以应用

    g=lambda :x+1
    
    
    g()
    会报错,X没定义
    
    g=lambda x,y: x*y      #  冒号前面是参数,后面是返回值
    
    g(1)会报错
    
    g(1,1)
    1
  • 相关阅读:
    让程序调用运行linux shell命令
    纯C的字符串问题
    Linux的打包和解压缩命令
    ubuntu安装mosquitto-1.4.5
    无Teamview授权,使用Teamview方式
    有效利用家用宽带,动态域名服务(DDNS)
    pfx格式证书转成nginx可用的证书
    iis文件上传限制
    vue脚手架使用
    netcore中执行linux命令
  • 原文地址:https://www.cnblogs.com/changshen/p/8616903.html
Copyright © 2011-2022 走看看