zoukankan      html  css  js  c++  java
  • python学习笔记(函数)

    #1
    #参数仅包含必选参数
    def func(x,y):
        y.append(x)
        print("%s" % y)
    func(1,[])
    #>>[1]
    func(2,[])
    #>>[2]
    
    
    #2
    #参数包含必选和可选参数,带默认值的参数为可选参数
    #若参数默认值为可变对象,默认参数保留了每次函数调用的修改
    def func(x,y=[]):
        y.append(x)
        print("%s" % y)
    func(1)
    #>>[1]
    func(2)
    #>>[1, 2]
    #为了防止以上情况发生,默认值改为none,并在函数体内加入检查代码
    def func(x,y=None):
        if y is None:
            y=[]
        y.append(x)
        print("%s" % y)
    func(1)
    #>>[1]
    func(2)
    #>>[2]
    
    
    #3
    #函数参数调用,有两种方法,一种是使用位置参数,一种是使用关键字参数
    def foo(w,x,y,z):
        pass
    foo(1,2,3,4)
    foo(1,2,z=4,y=3) #使用关键字参数时,参数的顺序并不重要
    
    
    #4
    #可变长参数列表,在定义函数时,使用*和**
    
    #使用*,将所有余下参数作为元组放入args变量,在函数内调用别的函数时,使用*args,将args元组重新转为参数列表,传递给被调用函数
    def foo1(x,*args):
        print("foo1: p1=%s,p2=%s" % (x,args))
    def foo(w,x,*args):
        print("foo: p1=%s,p2=%s,p3=%s" % (w,x,args))
        foo1(x,*args)
    foo(1,2,3,4,5,6)
    #>>foo: p1=1,p2=2,p3=(3, 4, 5, 6)
    #>>foo1: p1=2,p2=(3, 4, 5, 6)
    
    #使用**,将所有余下的关键字参数作为字典放入kwargs变量
    def foo(w,x,**kwargs):
        print("foo: p1=%s,p2=%s,p3=%s" % (w,x,kwargs))
    foo(1,x=2,y=3,z=4)
    #>>foo: p1=1,p2=2,p3={'y': 3, 'z': 4}
    
    #同时使用*和**
    def foo(w,*args,**kwargs):
        print("foo: p1=%s,p2=%s,p3=%s" % (w,args,kwargs))
    foo(1,2,3,y=4,z=5)
    #>>foo: p1=1,p2=(2, 3),p3={'y': 4, 'z': 5}

    闭包和装饰器的两篇不错的文章

    https://foofish.net/understand-decorator.html

    https://foofish.net/python-decorator.html

  • 相关阅读:
    iOS:Core Data 中的简单ORM
    Win8:Snap 实现
    js: 删除node的所有child
    WinJS:Listview item 设置背景透明
    iOS: 消息通信中的Notification&KVO
    win8: 清除iframe的缓存
    What's New in iOS7,iOS7新特性介绍
    "Entity Framework数据插入性能追踪"读后总结
    夜,思考——我想要的到底是什么?
    【查询】—Entity Framework实例详解
  • 原文地址:https://www.cnblogs.com/sky58/p/8323499.html
Copyright © 2011-2022 走看看