七星白树

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

函数相关

一、函数的作用

  1.解决代码冗余

  2.提高代码可读性

  3.提高代码重用性

  4.增强代码可扩展性

 

二、函数的结构

  下面就是一个最简单的函数

  
1 def demo(a,b):
2     ret=a+b
3     return ret
4 
5 ret=demo(1,2)
6 print(ret)
函数

  demo为函数名,a,b为函数的参数,ret=a+b即为函数的功能,return ret即将ret作为函数的返回值返回,demo(1,2)为调用该函数

 

三、函数的参数

  1.位置参数

    上面代码的a,b即为位置参数,位置参数按照位置传入,且要一对一不能多也不能少。

  2.默认参数

  默认参数在函数定义时就已经赋值,不再改变。当没有传入默认参数时,即为默认值;传入默认参数时,即为传入值。默认参数一般为不可变数据类型.

    
1 def demo(name,sex="male"):
2     ret="%s is a %s" %(name,sex,)
3     return ret
4 
5 ret1=demo("alex")
6 print(ret1)
7 ret2=demo("alex","female")
8 print(ret2)
默认函数

  3.动态参数

    1.位置动态参数:*args

      以元祖批量接收位置参数    

      
1 def demo(*args):
2     print(args)
3     ret=list(args)
4     return ret
5 
6 ret=demo(1,2,3,4,5)
7 print(ret)
位置动态参数

    2.关键字动态参数:**kwargs

      以字典批量接收关键字参数

      
1 def demo(**kwargs):
2     print(kwargs)
3     ret=kwargs.keys()
4     return ret
5 
6 ret=demo(a=1,b=2,c=3)
7 print(ret)
关键字动态参数

  4.关键字参数

    关键字参数在出入时不受位置的限制,但个数要相等。

    
1 def demo(a,b):
2     ret=a+b
3     return ret
4 
5 ret=demo(b=2,a=1)
6 print(ret)
关键字参数

  5.参数顺序

    
1 def demo(a,b,*args,c=2,d,e,**kwargs):
2     print(a,b,args,c,d,e,kwargs)
3 
4 demo(1,2,3,4,5,c=5,e=7,d=6,f=8,g=9)
参数顺序

 

四、函数的返回值

  函数最终所得的结果如果需要在外部调用,则需用return来返回。当函数执行一次return后,函数就结束,类似于break。函数的返回值需要有变量接收。

  返回值有三种情况

    1.没有返回值

      此时返回None。

    2.只有一个返回值

    3.有多个返回值

      1.以元祖的形式返回

      2.可以被多个变量接收

      3.变量的格式应该与返回值的个数相同

五、闭包

  1.内部函数如果引用了外部函数的变量,则内部函数就叫做闭包。

  2.闭包的主要应用即为装饰器

  3.装饰器

    1.装饰器的作用为在不修改原调用方式的情况下对原函数的功能进行扩展

    2.装饰器模板       

      
1 def wrapper(func):              
2     def inner(*args,**kwargs):
3         #被装饰的函数前面要添加的功能
4         ret=func(*args,**kwargs)
5         #被装饰的函数后面要添加的功能
6         return ret
7     return inner                
8 @wrapper
装饰器模板

    3.装饰器实例      

      装饰器实例

内部函数inner()就是在原函数的前面添加一个功能(print("你正在调用%s函数" %func.__name__)),外部函数wrapper()的功能就是将inner()函数的地址返回,@wrapper就是将返回得到的inner()地址赋值给welcom,这样welcom实际上就被指向了inner()函数。

 

 
posted on 2017-09-01 19:23  七星白树  阅读(59)  评论(0)    收藏  举报