百行代码入门Python - Chapter 5

以下代码均采用Python 3.5.2 编写。新建一个名为HelloWorld.py的文件,当然名称无所谓,输入以下代码:

#func return
def line_conf():
    b=15
    def line(x):
        return 2*x+b
    b=5
    return line

my_line=line_conf()
print(my_line(5))

#closure
print(my_line.__closure__)
print(my_line.__closure__[0].cell_contents)

def line_conf2(a,b):
    def line(x):
        return a*x+b
    return line

line1=line_conf2(1,1)
line2=line_conf2(4,5)
print(line1(1))
print(line2(1))

#decorator
def decorator_demo(old_function):
    def new_function(a,b):
        print("input", a, b)
        return old_function(a,b)
    return new_function

@decorator_demo
def square_sum(a,b):
    return a**2+b**2

@decorator_demo
def cubic_sum(a,b):
    return a**3+b**3

print(square_sum(2,1))
print(cubic_sum(2,1))

def pre_str(pre=""):
    def decorator(old_function):
        def new_function(a,b):
            print(pre+" input ",a, b)
            return old_function(a,b)
        return new_function
    return decorator

@pre_str("^_^")
def square_diff(a,b):
    return a**2-b**2

print(square_diff(2,1))

def decorator_class(SomeClass):
    class NewClass(object):
        def __init__(self, age):
            self.total_display=0
            self.wrapped=SomeClass(age)

        def display(self):
            self.total_display+=1
            print("total display", self.total_display)
            self.wrapped.display()

    return NewClass

@decorator_class
class Bird(object):
    def __init__(self, age):
        self.age=age

    def display(self):
        print("My age is ",self.age)

eagle_lord=Bird(5)
for i in range(3):
    eagle_lord.display()

#lambda
lambda_sum = lambda x,y: x+y

print(lambda_sum(1,2))

#map
data_list=[1,3,5,6]
result=map(lambda x: x+3, data_list)
for i in result:
    print(i)

data_list1=[1,3,5,7]
data_list2=[2,4,6,8]
result=map(square_sum,data_list1,data_list2)
for i in result:
    print(i)

读懂以上代码即可轻松掌握装饰器、map函数等基本命令使用方法,方便起见,可以考虑将尚未读到的代码注释掉,一段段阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值