zoukankan      html  css  js  c++  java
  • python学习笔记-函数与可变长参数

    一、函数

    1、

    def test(x):
    y=x+1
    return y
    print(test) #这是打印函数在内存中的地址

    过程:就是没有返回值的函数

    在python中过程也是函数,就算没哟返回值,也会返回个None

    def test(x):
        msg="hello"
        print(msg,x)
        return 1,2,3,'a',["steven","bob"],None
    
    t=test("jobs")
    print(t)  #打印返回的值,是一个元组:(1, 2, 3, 'a', ['steven', 'bob'], None)

    总结:返回值个数=0,返回None

    返回值=1,返回object

    返回值>1,返回tuple

    二、可变长参数

    1、形参变量只有在被调用时才分配内存单元,调用结束后释放所分配的内存单元,因此。形参只有在函数内部有效

    2、实参可以是常量,变量,表达式,函数等。无论是何种类型的量,在进行函数调用的时候,他们必须有确定的值。

    def add(x,y,z):
        res=x+y+z 
        print(res) 
    
    add(a,b,c)
    

     x,y,z是形参,a,b,c是实参

    3、位置参数和关键字参数

    位置参数必须一一对应,缺一行不行多一行也不行

    add(1,2,3)

    关键字参数必须一一对应,缺一行不行多一行也不行

    add(y=3,x=2,z=8)

    如果混合的方式,关键字参数必须在位置参数的右侧

    add(1,y=3,4)  #报错
    add(1,3,y=4)  #报错
    add(1,3,z=4)
    add(1,3,z=4,y=3)  #报错
    add(1,z=2,y=9)
    

    4、默认参数

    def add(x,y,z=5):
        res=x+y+z
        print(res)
    

    5、参数组:**字典,*列表

    I、*列表

    def test(x,*args):
        print(x)
        print(args)
        print(args[2])
    
    test(3,4,5,6,7,8,9) # 相当于把后面的多个实参当成一个元组传给形参

    结果:

    def test(x,*args):
        #print(x)
        print(args)
    
    test(3,[4,5,6,7])    #结果为:([4, 5, 6, 7],)
    test(3,*[4,5,6,7])   #结果为:(4, 5, 6, 7),和test(3,4,5,6,7)一样
    test(3) #结果为()

    II、**字典

    def test(x,**kwargs):
        #print(x)
        print(kwargs)
    
    test(1,a=3,b=4,c=5)
    test(1,a=3,b=4,c=5,c=5) #报错,一个参数不能传两个值

    III、混合的用法

    def test(x,*args,**kwargs):
        #print(x)
        print(args)
        print(kwargs)
    
    test(1,10,11,12,13,a=30,b=40,c=50)
    test(1,*[10,11,12,13],**{"a":30,"b":40,"c":50})  #写法2

    结果:

  • 相关阅读:
    入职linux基本命令学习
    C++大师Stan Lippman:我对中国程序员的忠告
    Create Your Own Search Engine with Python
    获取相加等于某个值的集合
    关于mysql的连接数问题
    修改Windows2003Server的Telnet默认端口(23)为其它端口的方法
    解决WCF传输大数据量时出错并提示:远程主机强迫关闭了一个现有的连接
    IIS服务器静态网页被挂马和解决方法(ZT)
    CAD2016 Object Arx开发环境搭建与HelloWorld实现
    我的Java之路(5)
  • 原文地址:https://www.cnblogs.com/steven223-z/p/12172911.html
Copyright © 2011-2022 走看看