美文网首页Python
Learning python | python 中的键值容器

Learning python | python 中的键值容器

作者: 周运来就是我 | 来源:发表于2019-06-24 18:56 被阅读38次

Python减少复制代码的方法有很多,其中不乏是出于用一个容器放代码,然后以一个规则来取用。

Python里边有这么一个通用的模式:

  • 拿一个类似 键=值 风格的容器
  • 通过 键的名称获得其中值

首先想到的就是字典了:

dic={}
dic={'name':'Bob','age':'40'}

dic['age']
Out[2]: '40'

对于一个字典来说,键是一个字符串,获得值的语法是[键]。对于一个模块来说,键是函数或者变量的名称,而语法是‘.键’ 。除了这个基本上没有差别了。

比如现在有这么一个模块,他的名字叫做myprint.py:

#!/usr/bin/python
#coding=utf8

print"千寻"

myheart = "琥珀川"

def whoinyourheart(name):
    print"{0} heart in my hand\n".format(name)

我来执行导入:

python
>>> import myprint
千寻
>>> myprint.myheart
'\xe7\x90\xa5\xe7\x8f\x80\xe5\xb7\x9d'
>>> myprint.whoinyourheart('zhouyunlai')
zhouyunlai heart in my hand

所以某块可以理解为一种特殊的字典,通过它们可以存储一些Python代码(变量,函数),可以通过‘.’操作符来访问这些代码。

Python中的类也可以执行类似的功能,我们可以把函数和数据放到一个容器中,通过‘.’来访问它们。

现在我在myprint.py中来定义一个类(作者快三十岁了,终于写出了一个类):

class Mystuff(object):

    def __init__(self):
        self.stangerine = 'And now a thousand years between'
    def apple(self):
        print"I AM CLASS APPLES!"

这段代码差不多就是模拟了一个名字叫Mystuff的模块,这里面有一个叫apple的函数,最难懂的恐怕是init 了。类与某块的主要差别是可以拿类创建出很多出来,哪怕一次一百万个,它们也不会相互干涉。而对于模块来说,一次导入之后,整个程序就那么一份内容。

既然类和模块差不多,那么对于类来说也必然有一个类似导入(import)的概念,这个名称就是实例化,当我们将一个类实例化之后就得到了一个对象。

>>> import myprint
千寻
>>> thing=myprint.Mystuff()
>>> thing.apple
<bound method Mystuff.apple of <myprint.Mystuff object at 0x7f0745e90f90>>
>>> thing.stangerine
'And now a thousand years between'
>>> thing.apple()
I AM CLASS APPLES!

然后还有几种,比如通过列表的下标来获取元素;通过配置文件来获取配置信息以及字符串格式化等均是键值容器。

相关文章

网友评论

    本文标题:Learning python | python 中的键值容器

    本文链接:https://www.haomeiwen.com/subject/lrqwqctx.html