1、闭包需要满足的三个条件是什么?
- 存在于两个嵌套关系的函数中,并且闭包是内部函数
- 内部函数引用了外部函数的变量
- 外部函数会把内部函数的函数名称返回
按照上面三个条件创建一个用于计算平方根的闭包函数。
import math
def outerfunc(): # outerfunc为外函数
x=int(input("请输入一个数字:")) # x是外函数的非全局变量
def innerfunc(): # innerfunc是内函数
return math.sqrt(x) #内函数使用外函数的非全局变量
return innerfunc #外函数最终返回的是内函数的引用
func=outerfunc()
sqrtone=func()
print("内函数计算后的平方根是:"+str(sqrtone))
2、现有一函数内容如下:
要求为test函数创建装饰器,装饰器函数有入参,在装饰器中打印出装饰函数,执行结果如下:
def q(w1):
def inner(num1,num2):
print("装饰器开始装饰:")
print("--打印装饰器的入参为:",num1,num2,"我是装饰器的入参啊")
w1(num1,num2)
return 'huatec'
return inner
@q
def test(num1,num2):
print("被验证函数开始,被修饰函数入参之和为:",num1+num2)
return 'huatec'
#调用test函数
print(test(1,2))
3、使用filter函数打印出1~100内所有能被3整除的数
import math
def bszc(x):
return x%3==0
newlist = filter(bszc,range(1,101))
print(list(newlist))
4、输入一个数使用reduce计算这个数的阶乘。
from functools import reduce
def add(x,y):
return x*y
list = []
i=int(input("计算阶乘,请输入一个数:"))
for x in range(1,i+1):
list.append(x)
print(list)
reduce(add,list)
print(int(reduce(add,list)))
5、实现乘法重载,将两个列表对应元素相乘。
import numpy as np
class TestChengFa(object):
def __init__(self,high,old):
self.high=high
self.old=old
def chenfa(self,a,b):
return a*b
def chenfa(self,listone,listtwo):
listthree=np.multiply(np.array(listone),np.array(listtwo))
print(listthree)
#创建对象
jack = TestChengFa(2,20)
print("开始调用原方法:")
print(jack.chenfa(4,5))
list1=[1,2,3,4]
list2=[5,6,7,8]
print("开始调用重载的方法")
jack.chenfa(list1,list2)
6、参照课件实例,完成鱼,鸟和水鸟的多继承创建。
更新中!!!!!
7、现有一Python类如下:
创建一个实例,按照“实例.属性”的方式分别打印出类属性和实例属性,要求打印的类属性为9,实例属性为5,按照“类.属性”的方式,打印出可以打印的所有属性,要求其中打印的类属性值为6,打印部分结果如下图:
8、创建一个类,要求内部包含一个用于求和的类方法,一个用于打印求和结果的静态方法,如图所示:
9、参照“模板”章节课件,完成模块得到制作、发布和安装。