python 函数——装饰器,闭包,推导式

闭包

闭包的定义需要满足以下三个条件:

~在一个外函数中定义了一个内函数

~内函数里运用了外函数的临时变量

~并且外函数的返回值是内函数的引用

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩猩文学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值