美文网首页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