",line1SyntaxError:positionalargume" />

python学习(11)

发布时间:2019-07-01 12:11:13编辑:auto阅读(1370)

    函数参数

    位置参数
    传入参数顺序 、个数必须一致
    def add(a,b):
    return a + b

    关键字参数

    def add(a,b,c):
    ... return a+b+c
    ...
    print(add(c=1,b=2,a=3))
    6

    注意:关键字参数传参只能放到后面

    print(add(c=1,2,3))
    File "<stdin>", line 1
    SyntaxError: positional argument follows keyword argument

    默认参数

    def add(a,b,c=10):
        return a + b + c
    
    print(add(3,b=2))

    默认参数需要放到后面

    def add(a,b=9,c):
        return a + b + c
    
    print(add(3,b=2))

    E:\python>py -3 test.py
    File "test.py", line 2
    def add(a,b=9,c):
    ^
    SyntaxError: non-default argument follows default argument

    可变参数
    可变参数-元组

    def func(a,b,*args):
    pass

    参数*args是一个元组参数,用一个星号表示,传入的参数会当做元组传入到args中,出位置参数a,b之外其他的参数都会传入args中,可以遍历args参数

    习题6:函数参数传入5个字母,声明一个可变参数的函数,拼成一个单词。

    def func(a,*args):
    
        result = ""
    
        result += a
        for v in args:
            result += v
        return result
    
    print(func("a","b","c","d","e"))

    可变参数-字典
    参数**kwargs是一个字典参数,用两个星号表示,传入的参数会当做字典传入到kwargs中,

    def func(**kwargs):
        print(kwargs)
    
    func(name="zhang",sex="F")

    传参需要遵循key = value的形式,key不需要引号,value需要加引号

    注意:如果同时存在位置参数、元组参数、字典参数的情况,需要按照位置参数、元组参数、字典参数的顺序定义;

    示例:

    def add(**kw):
        print(type(kw))
        for i in kw:
            print(i)
    
        for j in kw.values():
            print(j)
    
    print(add(a="1",b=2,c=3))

    习题7:使用必填参数、默认参数、可变元组参数、可变字典参数(value)计算一下单词的长度之和。

    #coding=utf-8
    def func(a,b="abc",*args,**kwargs):
        result = 0#总长度
        result += len(a)
        result += len(b)
        for v in args:
            result += len(v)
        for v in kwargs.values():
            result += len(v)
        print("a: ",a)
        print("b:",b)
        print("args:",args)
        print("kwargs: ",kwargs)
        return result
    print("长度: ",func("i","am","good","boy",name="hu",sex="f"))
    #print(func("i",c="am"))#b会默认取字符串"abc"

    lambda匿名函数
    一个参数:

    lambda x:x+1
    x为函数参数,x+1 为函数体,函数会返回x+1的值

    lambda x:x+1
    <function <lambda> at 0x0000000002980620>
    func = lambda x:x+1
    func(1)#调用
    2

    多个参数:

    fun = lambda x,y: x + y
    fun(1,3)
    4

    lambda x,y,z: (x+y)z
    <function <lambda> at 0x00000000029286A8>
    f = lambda x,y,z: (x+y)
    z
    f(1,2,3)
    27

    lambda示例:

    def make_repeater(n):
    return lambda s: s*n

    twice = make_repeater(2)# twice = lambda s:s*2

    print (twice('word'))#lambda word:word2
    print (twice(5))##lambda 5:5
    2

关键字

上一篇: Python文件读写

下一篇: python - 模块