zoukankan      html  css  js  c++  java
  • 函数参数

    默认值参数
    def add_end(L=[]):
    L.append('END')
    return L
    print(add_end([1, 2, 3]))
    print(add_end(['x', 'y', 'z']))
    #上面的两次调用add_end函数没有问题,

    print(add_end())
    print(add_end())
    #不传入参数,L指向一个内存地址,不传入参数内存地址是不变的,第一次追加'END'所以L = ['END'],下次再调用add_end(),在['END']后面追加'END'就变为了['END', 'END']

    原因解释如下:
    Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

    可变参数:
    def test(*args):
    print(args)

    test(1,4,7)
    test(*[5,6,9])

    关键字参数:
    def test2(**kwargs):
    print(kwargs)
    print(kwargs['name'])
    print(kwargs['age'])
    print(kwargs['sex'])

    test2(name='alex',age=8,sex='F')
    test2(**{'name':'alex','age':8,'sex':'F'})


    下面这些都是错误的:
    def test(x,y=2,z):
    print(x)
    print(y)
    print(z)
    #函数定义关键参数字不能放在位置参数前面,xx=x 这种形式的都是关键字参数,y=2就是关键字参数


    def test1(x,y):
    print(x)
    print(y)
    test1(y=2,1)
    test1(x=1,2)
    #关键字参数不能放在位置参数前面,y=2,x=1都是关键字参数
     
    def test2(*args):
    print (args)
    test2(x=1)
    #不能传入关键字参数

    def test(x,y):
    print(x)
    test(2,y=3,x=1)
    #不能为参数x赋予多个值



    默认值参考;
    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000





    
    
  • 相关阅读:
    Mac普通用户修改了/etc/sudoers文件的解决办法
    python对缓存(memcached,redis)的操作
    线程、进程、协程和队列
    python作用域和多继承
    sokect编程进阶
    socket编程基础
    python面相对象进阶
    python异常处理
    configparser模块
    subprocess模块
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9412272.html
Copyright © 2011-2022 走看看