zoukankan      html  css  js  c++  java
  • Python——函数的高级应用

    一、函数赋值给变量

    函数也是对象,也可以赋值给变量,当把函数赋值给变量后,可以通过变量调用函数。

    例:

    def test(x,y):
    	return x * y
    
    # 把函数赋值给变量
    a = test
    print (a)
    # 打印 <function test at 0x00000000030187B8>
    # 通过变量调用函数
    print (a(2,3))
    # 打印 6
    
    # 把函数的返回值赋值给b
    b = test(4,5)
    print (b)
    # 打印 20
    

    上面例子中,可以看出a = test 和a = test(4,5)的区别,a = test属于把变量指向函数,此时调用test(2,3)和调用变量a(2,3)完全一样;a = test(4,5)属于变量a接收了test(4,5)的返回值,如果test(4,5)没有返回值的话,a=None,而且在执行a = test(4,5)这个过程中,test(4,5)也执行了一次。

    二、用函数作为函数形参

    先看一段简单的代码:

    def test(x,y):
    	a = x + y
    	return 2 * a 

    当编写程序的时候,由于上面代码中x + y会经常变化,这时候可以把其中经常变化的逻辑分离出去,这时候就需要用函数作为函数的形参。

    例:

    def subtraction(x,y):
    	return x - y
    
    def addition(x,y):
    	return x + y
    
    def double(n):
    	return 2 * n
    
    # 下面代码分别使用subtraction()和addition()函数返回值作为double()的参数,从而动态改变这段代码
    # 相加后乘以2
    print (double(addition(2,3)))
    # 打印 10
    
    # 相减后乘以2
    print (double(subtraction(6,2)))
    # 打印 8
    

      

    三、使用函数作为返回值

    Python可以使用函数作为其他函数的返回值。

    例:

    def num(fn):
    	def subtraction(x,y):
    		return x - y
    	def addition(x,y):
    		return x + y
            # 返根据fn参数的值,回局部函数
    	if fn == 'subtraction':
    		return subtraction
    	else:
    		return addition
    
    # 当调用num()函数时,返回一个嵌套函数
    a = num('subtraction')    # 也可以这样写 print (num('subtraction')(5,1))
    print (a(5,2))
    # 打印 3
    
    b = num('addition')
    print (b(2,4))
    # 打印 6  

    上面代码中,定义了num()函数,该函数返回该函数局部函数中的其中一个,num()函数内分别定义了subtraction()和addition()两个局部函数,num()函数会根据传入的参数,选择两个局部函数中的其中一个作为返回值。

    四、lambda表达式

    使用lambda表达式,可以使代码更加简洁,lambda表达式可以在程序中被调用和传递。

    lambda表达式语法格式如下:

    lambda [参数列表] : 表达式
    

    如第三小点中的代码,就可以使用lambda表达式简化局部函数,例:

    # 原来的代码
    def num(fn):
    	def subtraction(x,y):
    		return x - y
    	def addition(x,y):
    		return x + y
    	if fn == 'subtraction':
    		return subtraction
    	else:
    		return addition
    
    
    # 简化后的代码
    def num(fn):
    	if fn == 'subtraction':
    		return lambda x , y : x - y
    	else:
    		return lambda x , y : x + y
    
    print (num('subtraction')(5,2))
    # 打印 3
    print (num("abc")(5,2))
    # 打印 7
    

    上面简化后的代码中,使用lambda关键字定义的就是lambda表达式,这里需要注意的是,lambda表达式只能是单行表达式,且必须使用lambda关键字去定义。lambda表达式在使用完之后会立即释放,提高性能。

  • 相关阅读:
    博客园
    hdu 2071 Max Num
    函数的可选参数
    JqueryUI的使用方法
    [转]淘宝网的设计流程
    hover!= mouseover+mouseout。但hover=mouseenter + mouseleave
    转:理解Progressive enhancement
    jQuery对象和DOM对象的区别
    JS字符串的slice和splice
    内家武功招数
  • 原文地址:https://www.cnblogs.com/mingmingming/p/11084042.html
Copyright © 2011-2022 走看看