闭包,装饰器

#-*-coding:utf-8-*-

               #闭包的作用在于可以随便改变数字
"""

def test(a,b):
    def test_in(x):
        print (a*x+b)
    return test_in

line1=test(1,1)#表示 test_in==line1
line1(0)
line2=test(10,4)
line2(0)
        eg:列1⃣

def test(number):
    print ("-----1-----")
    def test_in():
        print ("---2---")
        print (number+100)
    print ("----3-----")
    return  test_in  # 注释没有()
i=test(100)
print ("---"*10)
            eg:二

def test(number):
    print ("----1------")
    def test_in(number2):
        print ("----2-----")
        print (number+number2)
    print ("----3-------")
    return  test_in
ret=test(100)
ret(111)
            eg:三

def test(number):
    print ("------1-----")
    def test_in(number2):
        print ("----2----")
        print (number+number2)
    print ("-----3-----")
    return  test_in

fun=test(100)
fun(200)
            eg:四
def test(a,b):
    def test_in(x):
        print (a*x+b)
    return  test_in
line1=test(5,4)
line1(2)
line2=test(5,4)
line2(3)
            #for语句和rang()
for i in [1,2,3,4,5]:
    print(i)
    if i==2:
        continue
    print("i的平方是:%d"%(i*i))
    if i==4:
       break #结束循环
else:
    print("结束循环")

adct={"apple":1,"banana":2,"orange":3}
for key,value in adct.items():
    print (key,":",value)

for key in adct.keys():
    print (key)
for value in adct.values():
    print (value)

def test(a,b):
    print ("----1---")
    def test_in():
        print ("------in----")
        print (a+b)
    return  test_in()
i=test(3,3)

                        #装饰器
                #eg1
def w1(func):
    print ("正在装饰1")
    def inner():
        print ("正在验证权限1")
        func()#指向f1()
    print ("正在装饰2")
    return  inner()
@w1
def f1():
    print ("f1")

              #eg2
def func(function):
    print ("func1")
    def  func_in():
        print ("func_in---1")
        function()
        print ("func_in---2")
    return func_in
def test():
    print ("test")
test=func(test)
test()
            #eg3带有参数的装饰器
def func(function):
    print ("正在装饰1-----")
    def func_in(*args,**kwargs):#定义带有参数的方法,一代表以元祖保存,二表示��️用字典
        print ("func_in-----")
        function(*args,**kwargs)
        print ("2222")
    return func_in
@func
def test(a,b,c,d):
    print ("a+b+c=%d"%(a+b+c))


test(3,1,9,9)
                    #带有返回值的装饰器
def fun(function):
    print ("fun1")
    def func():
        print ("func1")
        ret=function()
        print ("func2")
        return ret
    return  func
@fun
def haha():
    print ("hhhh")
    return  "ret"
r=haha()
print ("sffff=%s"%r)
                #带有参数和返回值的装饰器

def fun(function):
    print ("fun-----1")
    def fun_in(*args,**kwargs):
        print ("fun_in---1")
        ret=function(*args,**kwargs)#创建一个ret用于接受返回值
        print ("fun_in-----2")
        return ret#返回ret
    print ("fun-------2")
    return fun_in
@fun
def test(a,b):
    print ("------test------")
    return "haha"
r=test(2,3)
print ("a+b=%s"%r)

                    # eg:五带有参数的装饰器
def fun_arg(arg):#定义一个带参数带装饰器
    print ("fun_arg")
    def func(function):#定义一个
        print ("func------")
        def fun_in():
            print ("记录日志,arg=%s"%arg)
            function()
        print ("jhjkhhjhh")
        return fun_in

    return func
@fun_arg("heihei")
def test():
    print ("----test-----")
test()
            #自定义初始化
class Test():
    def __init__(self):
        self.num=100
    def setNum(self,newNum):
        self.__num=newNum
    def getNum(self):
        return  self.__num

t=Test()
print (t.num)
t.setNum(200)
print (t.getNum())
                #MethodType
import  types
class Person():
    def __init__(self,newName,newAge):
        self.name=newName
        self.age=newAge
    def eat(self):
        print ("正在吃饭——————————")
def run(self):
    print ("-------%s正在跑步"%self.name)
p1=Person("p1",10)
p1.eat()
p1.run=type.MethodType(run(),p1)#有错看书-----


def createNum():
    a,b=0,1
    for i in range(5):
        print (b)
        a,b=b,a+b
createNum()
a,b=0,1
a,b=a,a+b
print (a)
print (b)

def test():
    i=0
    while i<5:
        temp=yield i #yield不懂
        print (temp)
        i+=1
t=test()

class Itcast(object):
    def __init__(self,subject1):
        self.subject1=subject1
        self.subject2='cpp'
    def __getattribute__(self, obj):
        if obj=='subject1':
            print ('log subject1')
            return 'rng'
        else:
            return 'object.__getattribute__(self)'
    def show(self):
        print ('this is Itcast')

s=Itcast("python")
print (s.subject1)
print (s.subject2)
a=[11,2,33,4,44,22]
t=a.sort(reverse=True)#排序
print (a)
                #os的使用多任务

import os
import time
ret=os.fork()#创建一个fork()
if ret==0:
    while True:
        print ("---1------")
        time.sleep(1)
else:
    while True:
        print ("---2-----")
        time.sleep(1)
import  datetime
i=datetime.datetime.now()
print (i)"""
i=22
print (i)

生成器yield:类似于return,有next方法,和send(传参方法)

装饰器:是一个闭包,把一个函数当成参数。返回一个替代版的函数,本质上就是一个返回函数的函数

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值