学一点记一点之Python

来源:互联网 发布:软件售后合同范本 编辑:程序博客网 时间:2024/04/30 06:31

(格式提示,标题2,标题3)

尴尬没想到大学里看的那点儿Python,到了现在完全已经忘记了。于是随学着随记一点吧。

0,基本语法

0.1 逗号

python里的逗号简直是逆天(hui san guan)的存在啊
示例代码1:
>>> a,b='misaka','mikoto'>>> a'misaka'>>> b'mikoto'

0.2 函数可以有多个返回值

测试代码:
#测试函数里可以有多个返回值def get_info():    return 'misaka',17001,{'nennrei':20}v1,v2,v3=get_info()print(v1)print(v2)print(v3)
输出
misaka
17001
{'nennrei': 20}
注意:
1,返回值的个数跟接收的变量的个数应该是相等的,不能多也不能少
2,返回的是按照顺序的,都是从左到右

0.3 字符串的格式化

示例代码:
>>> a=('goetze is number %d in die Mannschaft'%(19))>>> a'goetze is number 19 in die Mannschaft'>>> a=('%s and won the word cup in 2014'%(a))>>> a'goetze is number 19 in die Mannschaft and won the word cup in 2014'
可以看到,这里的a是可以被改变的。

1,字典

1.1 字典的建立

示例代码
kanojyo={'name':'c','age':20}; #建立一个人物,指定姓名和年龄信息kanojyo['exinfo']={}; #字典里可以再嵌套一个字典kanojyo['exinfo']={'post_code':300072,'address':'tj university'}; #设置嵌套里的字典的字段exinfo=kanojyo.get('exinfo',{}); #可以用一个临时数据address=exinfo.get('address','un-known'); #获得某些信息并打印print("kanojyo's address is %s"%(address));

1.2 Get方法

get是可以连用的,示例代码
>>> cyl={'name':'cyl','age':20,'exinfo':{'address':'tju','post_code':300072}}>>> cyl{'age': 20, 'name': 'cyl', 'exinfo': {'post_code': 300072, 'address': 'tju'}}>>> cyl.get('exinfo',{}).get('address')'tju'>>>
输出
noumi
misaka
chino


kud
mikoto
kafuu


示例代码
>>> kurasu={'chino':'kafuu','misaka':'mikoto','noumi':'kud'};>>> kurasu.keys()dict_keys(['noumi', 'chino', 'misaka'])>>> kurasu.values()dict_values(['kud', 'kafuu', 'mikoto'])



1.3 keys()、values()和items()

#测试字典里的items keys kurasu={'chino':'kafuu','misaka':'mikoto','noumi':'kud'};for k in kurasu.keys():    print('%s'%(k))print('')for v in kurasu.values():    print('%s'%(v))

1.4 len()

len函数可以获得字典里的条目的“个数”
测试代码
>>> dic={'misaka':'mikoto','noumi':'kut','kafuu':'chino'}>>> len(dic)3 <span style="color:#3366ff;">#字典里有3个条目(而不是6个)</span>>>> len(dic.keys())3 <span style="color:#3366ff;">#字典里有3个key</span>>>> dic['exinfo']={'asada':'shino','chitanda':'eru'}>>> dic{'noumi': 'kut', 'kafuu': 'chino', 'misaka': 'mikoto', 'exinfo': {'chitanda': 'eru', 'asada': 'shino'}}>>> len(dic) <span style="color:#3366ff;">#扩充后的字典有4个条目</span>4>>> len(dic.get('exinfo',{}))2 <span style="color:#3366ff;">#扩充的长度为2</span>

1.5 字典的列表(或叫做对象的数组)

示例代码如下:
>>> a=[{'kaf':'chn','msk':'mkt','ctd':'eru'},{'nou':'kut','asd':'sno'}]>>> a[1]{'nou': 'kut', 'asd': 'sno'}>>> a[0]{'kaf': 'chn', 'ctd': 'eru', 'msk': 'mkt'}>>> a[0].get('kaf','nill')'chn'>>>
这样,通过从0开始的下标就可以访问数组中的每一个字典了

2,类

2.1 类里的成员变量


示例代码(错误的代码)
#测试类里面的下划线的作用class misaka:    def __init__(self):        self.bango=17001;    def who(self):        print("misaka number: %d"%(bango));

这样运行会提示:
Line6 NameError: name 'bango' is not defined

示例代码(正确的代码)
#测试类里面的下划线的作用class misaka:    def __init__(self):        self.bango=17001;    def who(self):        print("misaka number: %d"%(self.bango));
得到了正确的结果:
misaka number: 17001


示例代码(正确的代码)
#测试类里面的下划线的作用class misaka:    def __init__(self):        self.bango=17001;    def _next_one(self):        self.bango=self.bango+1;    def who(self):        print("misaka number: %d"%(self.bango));
是可以运行的,可见类外面也可以用带下划线的函数
>>> from leilidexiahuaxian import misaka as m
>>> a=m();
>>> a.who()
misaka number: 17001
>>> a._next_one()
>>> a.who()
misaka number: 17002
>>>

示例代码(代码是正确的,但是没有按照目的进行执行)
class gakusei:    name='null'    age=16    def __init__(self):        name='ninngenshigaku'  #注意这里都没加self.        age=20
执行结果
>>> from gakusei import gakusei
>>> a=gakusei()
>>> a.age
16
>>> a.name
'null'                                   <------注意这里并没有按照__init__里的进行初始化
>>> a.age=17
>>> a.age
17

示例代码
class gakusei:    name='null'    age=16    def __init__(self):        self.name='ninngenshigaku'        self.age=20
执行结果:(这里就能正常初始化了)

>>> from gakusei import gakusei
>>> a=gakusei()
>>> a.name
'ninngenshigaku'
>>> a.age
20
>>>

2.2 类的继承

示例代码(能运行但是得不到想要的结果)
文件gakusei.py
class gakusei:    name='null'    age=16    def __init__(self):        self.name='ninngenshigaku'        self.age=20
文件misaka.py(两个文件在同一个目录下)
from gakusei import gakuseiclass misaka(gakusei):#class misaka:    bango=0    def __init__(self):        self.bango=17001
执行结果:

>>> from misaka import misaka
>>> a=misaka()
>>> a.bango
17001
>>> a.age   #注意这里并没有初始化为20,因此说明在Python中,如果父类定义了__init__(),则子类需要显式调用父类的__init__()
16

>>>
示例代码(能得到想要的结果的代码)
文件gakusei.py
class gakusei:    def __init__(self):        self.name='ninngenshigaku'        self.age=20
文件misaka.py(两个文件在同一个目录下)
from gakusei import gakuseiclass misaka(gakusei):#class misaka:    bango=0    def __init__(self):        gakusei.__init__(self)        self.bango=17001
执行结果(想要的结果)
>>> from misaka import misaka
>>> a=misaka()
>>> a.bango
17001
>>> a.name
'ninngenshigaku'
>>> a.age
20
>>>



3,异常处理

示例代码
#测试和学习Python里的异常处理机制 (似乎一般把open放在外面)try:    s=open('no_exist.file','r') #文件当然不存在except EOFError:    print('EOF Error occured')except IOError:    print('IO Error occured')except:    print('undefined error')print('owari') #这一句也会执行

执行结果:
IO Error occured
owari




0 0
原创粉丝点击