大数跨境
0
0

Python中五个不常见的隐晦用法小结

Python中五个不常见的隐晦用法小结 AI算法之道
2023-02-11
0
导读:​我直到最近才知道上述这些在Python中不常见的用法(我可能早该知道,但事实就是这样), 希望这篇文章可以给大家带来帮助。






01


引言



我已经用Python编程5年了(从2017年开始),直到最近才知道以下几个Python中不常见的用法,确实和人们对直观理解有所出入。


闲话少说,我们直接开始吧!





02


类中的私有变量不是真正的私有


我们直接上例子,如下:
class Dog():    def __init__(self, name):        self.__name = name    @property    def name(self):        return self.__name

在上述Dog类中,__name属性有getter方法,但没有setter方法。按照一般理解,我们作为用户应该只能通过成员函数name()来读取属性__name的值,而无法直接为Dog对象设置新的名称。但该私有变量并不是看上去那么私有。

dog = Dog("rocky")print(dog.__dict__)   # {'_Dog__name': 'rocky'}

如上所示,类的__dict__属性包含了该对象的所有属性。通过使用__dict__属性,我们甚至可以控制那些不应该访问的私有变量和属性。

样例如下:

dog.__dict__["_Dog__name"] = "fifi"print(dog.name)# fifi





03


Python中的无穷大表示


我们使用关键字inf来表示无穷大,代码如下:

a = float("inf")b = float("-inf")print(a, b)   # inf -inf
我们可以在Python中创建无穷大(和无穷小)的值。每个可显示表示的数值都小于inf且大于-inf,如下:
print(10**100000 > float("inf"))      # Falseprint(-(10**10000) < float("-inf"))   # False




04


可以使用类作为装饰器


假设我们有一个简单的函数,用来实现向某人问好的功能:

def hello(name):    return "hello " + nameprint(hello("fifi"))    # hello fifi
让我们编写decorator类,并在定义hello函数时使用它,如下:
class append():    def __init__(self, char):        self.char = char    def __call__(self, function):        def inner(*args):            return function(*args) + self.char        return inner@append("!")def hello(name):    return "hello " + nameprint(hello("fifi"))    # hello fifi!
我们当然也可以在一个函数上使用多次修饰器:
@append("?")@append("!")def hello(name):    return "hello " + nameprint(hello("fifi"))    # hello fifi!?






05


  汉字用作变量名


哈哈哈,在Python中也可以使用汉字作为变量名,举例如下:

我 = 4你 = 5print(我 + 你)    # 9

我没有尝试过使用Python语言中的这个特性,但如果你尝试了,请告诉我。虽然这不是一个非常有用的知识(除非你真的想惹同事生气)。





06


使用eval()在字符串中运行Python代码


我们可以使用Python内置的eval()函数来以字符串的形式运行Python代码,代码如下:
x = 4y = eval("x + 10")print(y)    # 14
一个更复杂的例子如下:
string = "print('hello world')"eval(string)  # prints hello worldstring = "1+2+3"eval(string)  # returns 6




07


总结


我直到最近才知道上述这些在Python中不常见的用法(我可能早该知道,但事实就是这样), 希望这篇文章可以给大家带来帮助。

您学废了嘛?






点击上方小卡片关注我






寄语:

所求皆如愿,

所行皆坦途。

多喜乐,长安宁。

【声明】内容源于网络
0
0
AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
内容 573
粉丝 0
AI算法之道 一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
总阅读129
粉丝0
内容573