#-*-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(传参方法)
装饰器:是一个闭包,把一个函数当成参数。返回一个替代版的函数,本质上就是一个返回函数的函数