zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Spring-----aop
    Activity的四种launchMode《转》
    解决gradle /Users/xxxx/Documents/workspace/fontmanager/.gradle/2.2.1/taskArtifacts/cache.properties (No such file or directory)报错办法
    Mac删除JDK
    Mac OSX Java 编译时乱码问题
    android中出现Error retrieving parent for item: No resource found that matches the Theme.AppCompat.Light
    使用AndroidStudio报错:INSTALL_FAILED_UPDATE_INCOMPATIBLE
    Java 类库和常用类库
    (斐波那契总结)Write a method to generate the nth Fibonacci number (CC150 8.1)
    各种排序学习归纳总结(Java)
  • 原文地址:https://www.cnblogs.com/lilip/p/5560387.html
Copyright © 2011-2022 走看看