简明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 函数使用方法的范例,可以很容易的查看,试用,修改这些演示源码。

 
原文地址:https://www.cnblogs.com/marvintang1001/p/10841829.html