闭包
闭包的定义需要满足以下三个条件:
~在一个外函数中定义了一个内函数
~内函数里运用了外函数的临时变量
~并且外函数的返回值是内函数的引用
def test(number):
print('--1--')
def test_in(number_in):
print('--2--')
return number + number_in
print('--3--')
return test_in
t1 = test(1)
t2 = t1(1)
print(t2)
装饰器
装饰器(@)是一种语法糖,主要用于函数或类的基础上添加一些可重用的额外功能。从应用开发角度来看的话,我们使用装饰器来对我们的应用代码进行功能性扩展和包装,以提高代码 的可重用性和可维护性。
例子:
import time
def yunxing_time(fun):
start = time.time()
fun()
end = time.time()
print(f'时间差{end-start-2}')
def test1():
print("功能:计算百以内数字和")
time.sleep(2)
def test2():
print("功能:计算百以内偶数和")
time.sleep(2)
fun = eval(input('输入要计算的函数'))
yunxing_time(fun)
例子2:
def print_hw(f): # f = test
print("hello world")
return f
@print_hw # test = print_hw(test) # test = f
def test():
sum_li = sum([1,2,3])
print(sum_li)
return sum_li
# test = print_hw(test) #
test()
推导式
介绍:
python中有一种特有的语法,就是推导式(又称为解析式)。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
例子:
li = [6,2,6,7,-15,8,-17,-10,-15,-4]
li1 = []
for i in li:
if i < 0:
i = i**2
li1.append(i)
print(li1)#[225, 289, 100, 225, 16]
li1 = [i**2 for i in li if i<0]
for i in '123':
for j in 'abc':
print(i+j)
li = [i+j for i in '123' for j in 'abc']
print(li)
li = ['age','name']
dic = {i:li.index(i) for i in li}
print(dic)
|