其余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_checkdef 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

我们使用装饰器的时候注意
- 装饰器函数嵌套来写,装饰器本身只接收函数类变量,返回只返回装饰器函数中的子函数
- 一个装饰器函数中里面可以又多个子函数,但是只有一个可以生效,子函数中可以接收若干变量
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
