简明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 程序,我们一般的步骤是:
- import 所有会用到到模块
- 定义我们自己的类和函数。对于每个函数里要用到的函数,被调用的函数一般放在调用函数的前面定义。这样我们读程序的时候,如果从上到下,就知道调用的函数,在前面是怎么定义的,有什么功能,需要什么参数,返回什么值。
- 在文件的最下面,调用上面定义的函数和类,开始工作。
- 命令行的选项是通过 sys.argv 这个列表得到的。
- 尽量使用Python提供的内建函数和模块里的函数,所以我们对Python的模块说明手册要很熟悉。
- 程序的清晰比简洁重要,多写注释,表明自己下面要做什么。越清晰的程序越容易修改。否则十天半个月后您想给自己的程序加个新功能,结果根本看不懂原来的程序了,可怎么加?
###################################END###################################
最后给《入门课》写个小尾巴:
1)作者希望先熟悉:
- 内建函数
- 内建数据类型 (字符串,数字,列表,字典,文件对象)
- sys 模块
- re 模块
- os 模块
- optparse 模块
熟悉这些,基本上编程没问题了。
2)中文编码:encode()和decode(),他们把各种编码与标准的统一码进行转换(具体使用看说明):
# 把统一码转成 GBK 码
"我们就是花朵".encode("GBK") # 把使用 UTF-8 编码的字符串转成统一码 "你们才是花朵,你们全家都是花朵".decode("UTF-8")
3)网络编程:还要熟悉网络相关的模块:
- urllib2
- cookielib
- xml.etree.elementtree
4)图形界面:建议使用PyGTK(http://www.pygtk.org)或者PyQt(http://www.riverbankcomputing.co.uk/software/pyqt/intro)图形界面函数库,这时候,也需要熟悉面对对象编程的概念
5)查表:Acire (https://aciresnippets.wordpress.com)是一个 Python 编程范例的互动程序。他提供了大量介绍 Python 函数使用方法的范例,可以很容易的查看,试用,修改这些演示源码。