zoukankan      html  css  js  c++  java
  • 简明python_Day2_字典、集合、模块、类、编程习惯

    2019-5-9   晴   时热时冷的感觉,开学

    昨天学到元组(tuple),补一下这个入门的link:

    https://maliangliang.wordpress.com/2011/02/26/%E9%9D%9E%E7%A8%8B%E5%BA%8F%E5%91%98-python-%E7%BC%96%E7%A8%8B%E6%A6%82%E5%BF%B5/ 

    继续,go on~

    ##################################################

    C.字典(dict)

    1)一个字,一个解释,用大括号表示:

        adict = {1: "我是解释",

      2: "我是解释2", 
      "我是3": 3, 
      "我是4": 4
      }

    前面的字叫钥匙(key)或者索引,后面的解释,叫”值”。索引不能重复,必须是唯一的。

    注意:前面的key和后面的解释都可以是数字,文字,还可以是函数或元组。但前面的字不能是列表,因为列表内容是可变的,可变就不能做索引。

    2)用key来提取,设定或者增加解释,而不是用位置:

        adict[1] # "我是解释"

        adict["我是3"] # 3

      adict[1] = 2 # 设定新的值

      adict["新索引"] = "没头脑和不高兴" # 增加一个新索引和值

    D.集合(set)

    1)类似列表,不同的是,内容不重复,也没有次序。建立一个集合的方式是使用set()函数,参数可以是列表,元组,一串儿也可以

    aset=set([1,2,3,2,4,6]) #去掉重复内容,是1,2,3,4,6

    2)集合的用处就是来去掉重复的内容

    3)集合可以变成列表,利用list()函数

       alist=list(aset)

    E.模块(module)

    1)一个模块包含一定用途的函数,在相应使用时调用,具体实现上一个模块就是一个python的程序文件。

    2)如果模块还需要细分更多层,那么每层就是一个文件目录。里面有很多做为模块的python文件

    3)要使用模块,我们用import先引用一个模块time,再使用里面的函数clock(),格式 模块名.函数名 :

    mport time
    now = time.clock()
    print (now)

    4)多调用少写源码就很开心~~

    F.类(class)(面向对象的核心:万物皆可类

    1)python提供的模块,里面的函数都包在类里面。

    2)现在比较流行的方式是面向对象编程。面对对象就是把同类的函数、变量打包放在一个书包里,这个书包就叫“类”。

    3)这个“类”一般上是以具体的东西为模板,譬如物种:人类,猫类;物品:家俱类,电器类。他里面打包的函数,基本上是针对这个类进行操作的,譬如人说话,人吃饭,人的鼻子人的嘴,猫逮耗子,家居磨损。

       使用类的时候,我们先具体化他,把种类变成个体。人类变成某人,猫类变成某猫,家俱变成某件家俱。这个具体化的类,就是所谓的“对象(object)”。然后我们就可以使用这个具体人,猫,家居的函数,针对具体的人,物进行操作了,所谓操作对象

    4)建立类

    class RenLei:
        def __init__(self, mingzi):  # self 是一个固定参数名,代表这个对象自己,“自己”还有其他各种属性,属性就是类中的变量或称作状态值。
            self.mingzi = mingzi     # 预设mingzi存到对象自己的 mingzi 变量上。(这叫初始化赋值)
            self.xingbie = "nv3"     # 性别,预设为女
        def shui2(self):             # 谁函数,提取姓名
            return self.mingzi
        def gai3ming2(self, xin_mingzi):    # 改名函数
            self.mingzi = xin_mingzi

    上面的例子,一开始就要求给这个对象一个名字。

    • 目的: 我们在程序中定义类的目的,主要就是定义一些针对这个 类本身的变量(如上例: mingzi, xingbie)进行操作的函数。把这些变量和相应的操作函数捆绑到一起,形成一个有机的整体,便于进行复杂的操作;而且有了分类,程序结构也更加清晰一点。
    • self: 在类的定义里,每一个函数,他的第一个参数,都是规定死的,必须是 self。 self代表这个对象自己。在对象内部,这个对像本身的变量,函数,都是通过这个self来存取的。

    因为我们建立类的目的,是对类内部变量进行操作,所以这个代表对象本身的变量 self ,在我们类的函数中,就很重要了。

    在使用类里的函数时,不用提供 self 这个参数,程序自动提供 self,让我们使用他的内部函数,变量。我们只要提供其他参数即可。

    • __init__(): 这个类函数是一个特殊的函数,他代表从类具体化到对象的时候,需要套用的公式。

    通过类建立对象的时候,程序会自动调用 __init__()函数。所以他叫做初始化函数。建立对象的时候,有什么一开始的要求,都可以通过他来指定,比如要求“脚不大好头发没有麻子”。

    当然如果没有初始要求,也可以不定义这个函数,那么程序就不会自动调用他了。

    • 属性: 而类本身的变量,有个专用名词叫类的属性。这些属性可以让我们保留类的一些状态值,并且通过类函数来提取或者改变这些状态。例如:除了人的名字,性别外,还可以保留一个吃饱的状态,吃饭函数可以顺手把这个状态设定成“吃撑了”,过了半个小时,可以通过别的函数把这个状态又改成饥饿状态了(消化能力是强了点儿)。

    定义类的属性的方法,一般是在 __init__ 这个类函数里,使用

    self.属性名 = 初始值

    的方式来定义的。如果没有初始值,Python 有一个特殊的 None 符号,来代表没有值,所有没有值的地方都可以用他。

    • 类函数: 而类函数的定义,是直接在类里面,缩进四个空格,像一般函数定义就可以了。只是别忘了第一个参数,一定要是 self

    5)具体类,也就是建立对象(具体这个人类是谁,涉及到属性和状态的具体化):

        他的格式是,直接把类的名称当作一个函数来使用,也就是后面加括号()和参数。这个函数对应的参数,则是这个类的 __init__() 函数所要求的参数。如果没有 __init__() 函数,则不需要给参数。

    # 建立对象,提供的参数对应__init__() 函数,self 这个参数程序会自动提供,不用我们提供。
      xiaozhang1 = RenLei("小张")  # 建立一个叫小张的人
      mingzi = xiaozhang1.shui2()  
    """
    使用“对象名.函数名()”的格式来调用类里的函数
    之前设定了:
       def shui2(self):             # 谁函数,提取姓名
            return self.mingzi
    """
       print (mingzi)               # 打印 "小张"

    6)字符串的对象性质:

    Python 里的字符串,列表,元组,字典,他们本身都是面对对象的类,所以带有很多函数可以对自己进行操作,只要你是这个类,具体的你能使用这个类中的函数,格式:“对象名.函数名()”

    譬如:

    a = "脚不大好 头发没有 麻子".split()
    split是字符串这个类的函数,他可以把字符串在给定位置分割,当我们不给他参数的时候,会在所有空白位置分割,然后返回一个列表,里面是被割裂的字符串。
    结果,a 的内容是 ["脚不大好", "头发没有", "麻子"],这是一个有3个元素的列表。
    书中作者建议:对于字符串,列表,字典之类的操作,请熟读说明手册对他们的说明,Python编程,主要就靠字符串,列表和字典了。


    ################################### END ##################


    Python程序员编程习惯

    1)more important!!:大量的使用 list 这个列表方式来存储、操作数据。一字长蛇阵是蟒蛇的绝招,多用没错

    2)
    写一个 Python 程序,我们一般的步骤是:
    1. import 所有会用到到模块
    2. 定义我们自己的类和函数。对于每个函数里要用到的函数,被调用的函数一般放在调用函数的前面定义。这样我们读程序的时候,如果从上到下,就知道调用的函数,在前面是怎么定义的,有什么功能,需要什么参数,返回什么值。
    3. 在文件的最下面,调用上面定义的函数和类,开始工作。
    4. 命令行的选项是通过 sys.argv 这个列表得到的。
    5. 尽量使用Python提供的内建函数和模块里的函数,所以我们对Python的模块说明手册要很熟悉
    6. 程序的清晰比简洁重要,多写注释,表明自己下面要做什么。越清晰的程序越容易修改。否则十天半个月后您想给自己的程序加个新功能,结果根本看不懂原来的程序了,可怎么加?

    ###################################END###################################

           最后给《入门课》写个小尾巴:

    1)作者希望先熟悉:

    • 内建函数
    • 内建数据类型 (字符串,数字,列表,字典,文件对象)
    • sys 模块
    • re 模块
    • os 模块
    • optparse 模块

    熟悉这些,基本上编程没问题了。

    2)中文编码:encode()和decode(),他们把各种编码与标准的统一码进行转换(具体使用看说明):

             # 把统一码转成 GBK 码

        "我们就是花朵".encode("GBK")
    
        # 把使用 UTF-8 编码的字符串转成统一码
        "你们才是花朵,你们全家都是花朵".decode("UTF-8")

    3)网络编程:还要熟悉网络相关的模块:

    • urllib2
    • cookielib
    • xml.etree.elementtree
    • email

    4)图形界面:建议使用PyGTK(http://www.pygtk.org)或者PyQt(http://www.riverbankcomputing.co.uk/software/pyqt/intro)图形界面函数库,这时候,也需要熟悉面对对象编程的概念

    5)查表:Acire (https://aciresnippets.wordpress.com)是一个 Python 编程范例的互动程序。他提供了大量介绍 Python 函数使用方法的范例,可以很容易的查看,试用,修改这些演示源码。

     
  • 相关阅读:
    unsupported jsonb version number 123
    如何在MPlayer上支持RTSP
    TDengine 时序数据库的 ADO.Net Core 提供程序 Maikebing.EntityFrameworkCore.Taos
    如何使用IoTSharp对接ModBus?
    如何从源码启动和编译IoTSharp
    Asp.Net Core 自动适应Windows服务、Linux服务、手动启动时的内容路径的扩展方法
    MQTTnet 的Asp.Net Core 认证事件的扩展
    Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
    The remote certificate is invalid according to the validation procedure 远程证书验证无效
    settings插拔式源码
  • 原文地址:https://www.cnblogs.com/marvintang1001/p/10841829.html
Copyright © 2011-2022 走看看