python的一些有趣的小知识二

122 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情 今天分享一些数据库的一些小知识。

"Gawky and proud of it."

"On the Internet, nobody knows you're a dog."

今天就再来介绍一些python相关的有趣和使用的小技巧吧,感兴趣的赶紧关注起来哦

try except和try except Exception as e的区别

sort()函数是对可迭代对象的排序,直接修改源对象,没有返回值

x=[8,9,0,7,4,5,1,2,3,6]
x.sort(key,reverse=True)

sorted函数u二十对可迭代对象进行排序,但是不修改源对象,会返回一个新的值 3.sorted()函数会返回一个排序列表,不改变原有序列

 x=[8,9,0,7,4,5,1,2,3,6]
 y=sorted(x,key,reverse=True)
try:
    pass
except Exception as e:
    pass

没区别,只是缩写,代码看起来更为整洁而已,except 后面也可以不指定具体的异常名称,这样的话,表示要捕获所有类型的异常。有机会可以详细说一下exception的继承关系。

@property

@property,熟悉的人都知道,这是python装饰器的写法,当我们使用@property来装饰方法时,会将方法转换为相同名称只读属性,从而创造一个只读属性。这样可以防止属性被篡改。

一般都是配合@x.setter来使用的,可以通过setter对需要修改的参数进行校验。 如下:

class C: 

    def __init__(self): 
        self._x = None 
        
    @property 
    def x(self): 
        """I'm the 'x' property.""" 
        return self._x 

    @x.setter 
    def x(self, value): 
        self._x = value

返回多个值

在python中的函数/方法是可以返回多个返回值的,且无需使用列表,字典或者类。如果返回值的数量有限的话,这样使用是没有任何问题的,但是如果返回值超过三个,建议将返回值放到一个数据类中,就像下一个小知识点说的一样,代码如下:

def get_user_info()
    return "boy","18","sam"
    
sex,age,name =  get_user_info() 

数据类

Python从版本3.7开始提供数据类。与常规类或其他方法(比如返回多个值或字典)相比,数据类有几个明显的优势:

  • 数据类的代码量较少
  • 你可以比较数据类,因为数据类提供了 eq 方法
  • 调试的时候,你可以轻松地输出数据类,因为数据类还提供了 repr 方法
  • 数据类需要类型提示,因此可以减少Bug的发生几率

数据类的示例如下:

from dataclasses import dataclass

@dataclass
classCard:
    rank: str
    suit: str

card = Card( "Q""hearts")

print(card == card)
# True
print(card.rank)
# 'Q'
print(card)
Card(rank= 'Q', suit= 'hearts')