• Python:函数


    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    定义和调用

    >>> def add(x,y):
    ...     print('x=',x)  #Python3必须加"()"
    ...     print('y=',y)
    ...     return x+y
    ...
    >>> add(1,2)
    x= 1
    y= 2
    3

    参数收集

    #当参数不确定时,使用*定义函数,并返回一个元组

    def func(x,*arg):
        print (x)        
        result=x
        print (arg)
        for i in arg:
            result +=i
        return result
    print (func(1,2,3,4,5,6,7,8,9))    
    #返回结果
    1                    #对应print (x)
    (2, 3, 4, 5, 6, 7, 8, 9)        #对应print (arg)
    45                   #最后print (func(1,2,3,4,5,6,7,8,9))结果    

    #当参数为赋值语句时,使用**定义函数,并返回一个字典

    >>> def f(**karg):
    ...     print (karg)
    ...
    >>> f(a=1,b=2,c=3)        #当参数为非赋值语句时,报错
    {'c': 3, 'a': 1, 'b': 2}

    *和**定义函数综合举例

    >>> def foo(x,y,z,*arg,**karg):
    ...     print (x)
    ...     print (y)
    ...     print (z)
    ...     print (arg)
    ...     print (karg)
    ...
    >>> foo('taylor',1989,'adele')
    taylor
    1989
    adele
    ()
    {}
    >>> foo(1,2,3,4,5)
    1
    2
    3
    (4, 5)
    {}
    >>> foo(1,2,3,4,5,name="taylor")
    1
    2
    3
    (4, 5)
    {'name': 'taylor'}

    几种定义方式汇总

    1. def a(p1,p2,p3) #参数的位置很重要
    2. def a(p1=v1,p2=v2) #定义的时候直接赋值
    3. def a(*arg) #适用不确定个数
    4. def a(**arg) #必须接收arg=val的形式

    几个函数

    lambda

    >>> num=[1,2,3,4,5]
    >>> lam=lambda x:x+1    #函数后直接使用变量,变量后为冒号隔离表达式,表达式的结果为函数的返回值
    >>> n=[]
    >>> for i in num:
    ...     n.append(lam(i))
    ...
    >>> n
    [2, 3, 4, 5, 6]

    map

    map(func,seq),对可迭代对象的每个元素执行func函数

    >>> num=[1,2,3,4,5]
    >>> list(map(lambda x:x+1,num))    #python3需要将map转换成list格式,否则报错,因为直接使用map返回的是iterators
    [2, 3, 4, 5, 6]
    >>> l1=[1,2,3,4,5]
    >>> l2=[9,8,7,6,5]
    >>> list(map(lambda x,y:x+y,l1,l2))
    [10, 10, 10, 10, 10]

    reduce

    reduce(func,seq),func必须为二元操作函数,先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。横向运算。

    >>> from functools import reduce        #python3无法直接使用reduce函数,需先引用
    >>> reduce(lambda x,y:x+y,[1,2,3,4,5])     #“横着”依次计算
    15

    filter

    filter(func, iterable),对iterable中的元素执行func,并将满足func的元素返回新list中

    >>> l=[1,2,3,4,5]
    >>> list(filter(lambda x:x>3,l))        #同reduce函数
    [4, 5]

      等价语句

    >>> [x for x in l if x>3]        #三元操作符    
    [4, 5]
    
    #三元操作符 
    A=Y if x else Z
    如果x为真,执行A=Y
    如果x为假,执行A=Z
  • 相关阅读:
    移动端line-height问题
    Android8 自定义广播接收不到的问题
    vue 使用font-awesome
    在vue中使用highcharts的仪表图等扩展
    android控件RecyclerView中,如何显示自定义分割线以及最后一项去除分割线
    使用RecyclerView设置自定义分割线
    Android-配置文件中设置“android:clickable="false"无效的原因及解决办法
    HDU 4632 Palindrome subsequence (区间DP)
    HDU 2208 唉,可爱的小朋友(DFS)
    HDU 4618 Palindrome Sub-Array
  • 原文地址:https://www.cnblogs.com/lilip/p/5560387.html
Copyright © 2020-2023  润新知