其余python操作

1  切片

使用[]可以给list或tuple进行切片操作

中括号内第一个值是起始位,第二个位置是终止位

a = [1,2,3,1]
b = a[0:2]
print(b)

我们也可以加入第三个值,第三个值是每隔几个值选中一次

  • 起始位为0,终止位为3,选中第一个值后每隔两个值(包括第一个值)选下一个值
a = [1,2,3,1]
b = a[0:3:2]
print(b)

我们有的时候看代码中是这样写的,这样写的意思就是全部选中,然后每隔两个值选一次

a = [1,2,3,1]
b = a[::2]
print(b)

起始位与终止位也可以为负值,这样就是倒着选

a = [1,2,3,1]
b = a[-3:-1]
print(b)

第三个值也可以为负值

a = [1,2,3,1]
b = a[::-1]
print(b)

a = [1,2,3,1]
b = a[::-2]
print(b)

元组与上面使用方法相同

2  列表逆序

a = [1,2,3,4]
b = a[::-1]
print(b)

3  装饰器

我们使用@符号作为装饰器的标志,在 Python关键字_potato123232的博客-CSDN博客 中我提到过 @staticmethod(静态方法) 与 @classmethod(类方法),这两个是python内置的,除此之外我们可以可以自建装饰器

我们现在想一个应用场景,现在你设计了一个除法运算,在除法之前你想检查除数是否为0,那么你可以这样写

def div(a,b):
    if b == 0:
        return 'b不能为0'
    else:
        return a/b

但是你的代码中现在有多个不同的函数需要检查,你当前已经写好了,不想再每个都加上if与else这种逻辑,那么你应该这样写

def check(func):
    def div_check(a,b):
        if b != 0:
            return func(a,b)
        else:
            return 'b不能为0'
    return div_check

@check
def div(a,b):
    return a/b

再加一个函数也是一样

def check(func):
    def div_check(a,b):
        if b != 0:
            return func(a,b)
        else:
            return 'b不能为0'
    return div_check

@check
def div(a,b):
    return a/b

@check
def div2(c,d):
    return c/d

那么我们现在又想加入一个条件,输入的两个值只能为整形,同样我不想繁琐的加if...else,那么我们应该这样写

def check(func):
    def div_check(a,b):
        if b != 0:
            return func(a,b)
        else:
            return 'b不能为0'
    return div_check

def check2(func):
    def div_check2(a,b):
        if type(a)==type(1) and type(b)==type(1):
            return func(a,b)
        else:
            return '这两个参数必须为整形'
    return div_check2

@check2
@check
def div(a,b):
    return a/b

@check2
@check
def div2(c,d):
    return c/d

在我们的设计中优先判定check2,check2满足后判定check1,都满足后执行div或div2

我们使用装饰器的时候注意

  • 装饰器函数嵌套来写,装饰器本身只接收函数类变量,返回只返回装饰器函数中的子函数
  • 一个装饰器函数中里面可以又多个子函数,但是只有一个可以生效,子函数中可以接收若干变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Suyuoa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值