Python零基础学习(3)

来源:互联网 发布:wow.js是用来做什么的 编辑:程序博客网 时间:2024/04/30 13:08

第三天:

#递归
def cael(n):
    print(n)
    if int(n/2)>0:
        return cael(int(n/2))
    print n
cael(10)


#*args:接受N个位置参数,转换成元组形式
def test(*args):
    print(args)
test(1,2,3,4,5,5)
test(*[1,2,3,4,5,5])#args=tuple([1,2,3,4,5])
def test1(x,*args):
    print(x)
    print(args)
test1(1,2,3,4,5,6,7)




#**kwargs:接受N个关键字参数,转换成字典的方式
def test2(**kwargs):
    print (kwargs)
test1=(**{'name':'zhangzhao','age':8})
test=(name="zhangzhao",age=21)    


def test3(name,age=18,**kwargs):
    print(name)
    print(age)
    print(kwargs)
test('zhangzhao',age=34,sex='m',hobby='tesla')
"""
#装饰器(无参数)
def outer(func):
    #原来的f1函数
    #func=原来的f1值
    def inner():
        print ("hello")
        print ("hello")
        print ("hello")
        r=func()   #r=None
        print("end")
        print("end")
        print("end")
        return r
        
    return inner


@outer
#1.执行outer函数,并且将其下面的函数名,当作参数。即f1=func
#2.将outer的返回值重新赋给f1=outer的返回值
#新f1函数=inner
def f1():
    print ("F1")
r=f1()
#只要你的函数应用了装饰器,那么函数就被重新定义,重新定义为:装饰器的内层函数


#(有参数)
def outer(func):
    def inner(*arg,**kwargs):
        print("123")
        ret=func(*arg,**kwargs)
        print("456")
        return ret
    return inner
@outer
def index(a1,a2):
    print ("vrey good")
    return a1+a2
index(1,2)


#多个装饰器修饰同一个函数
def outer_0(func):
    def inner(*arg,**kwargs):
        print("3.5")
        ret=func(*arg,**kwargs)
        return ret
    return inner
def outer(func):
    def inner(*arg,**kwargs):
        print ("123")
        ret=func(*arg,**kwargs)
        print("456")
        return ret
    return inner
@outer_0
@outer
def index(a1,a2):
    print("very good")
    return a1-a2
index(1,2)


原创粉丝点击