<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post//</link>
<title><![CDATA[我的python学习笔记]]></title> 
<author>root &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Python]]></category>
<pubDate>Tue, 21 Aug 2007 15:42:45 +0000</pubDate> 
<guid>https://blog.liuts.com/post//</guid> 
<description>
<![CDATA[ 
	★零、常用方法：<br/>多语言脚本需要加utf编码加以识别：<br/>#-*-coding:utf-8-*-<br/><br/>系统方法：<br/>type(s)#查看变量类型<br/>id(s)&nbsp;&nbsp;#查看内存存储ID<br/>dir(s) #查看对象有方法<br/>help(s)#查看s类的完整方法列表。<br/><br/>变量类型转换：<br/>int()<br/>str()<br/>float()<br/>bool()<br/>将字符串False转成bool的False:<br/>a='False'<br/>eval(a)<br/>★一、python转义符<br/>>>> s = 'I&#92;'m Python.'<br/>>>> s<br/>"I'm Python."<br/><br/>>>> print 'Python&#92;t2.5'<br/>Python 2.5<br/><br/>>>> print 'Python&#92;n2.5'<br/>Python<br/>2.5<br/><br/>>>> print 'Python&#92;&#92;string'<br/>Python&#92;string<br/>如不想发生转义，输出前加一个r字符：<br/>>>> print r'Python&#92;n2.5'<br/>Python&#92;n2.5<br/><br/>★二、字符串分隔，表列转字符串<br/>分隔符不指定，默认是空格<br/>import string<br/>s='sdf@f87@9845@4578'<br/>s1=string.split(s,'@')<br/>['sdf','f87','9845','457']<br/><br/>s=string.join(s1,'-')<br/>sdf-f87-9845-457<br/><br/>★三、文档字符串，定义复杂多行字符串，无需考虑其格式；<br/>doc = """(开始)<br/>[内容]<br/>"""(结束)<br/><br/>★四、字符串切割<br/>s='abcdefghijklmnopqrstuvwxyz'<br/>print r's[0:2]',s[0:2]<br/>ab<br/>格式：字符串变量[开始位置(0开始),结束位置(实际位置-1),[步长]]<br/><br/>★五、unicode字符串及定义<br/>跟普通字符串变量一样，只是在定义前面加'u'。<br/>cn = u'中文'<br/>len(cn)结果为2<br/><br/>en = '中文'<br/>len(en)结果为4<br/><br/>★六、字符串编解码——str与unicode的互相转换<br/>>>> us = u'中文'<br/>>>> s = us.encode('mbcs')<br/>>>> s<br/>'&#92;xd6&#92;xd0&#92;xce&#92;xc4'<br/>>>> print s<br/>中文<br/>>>> us = s.decode('mbcs')<br/>>>> us<br/>u'&#92;u4e2d&#92;u6587'<br/>>>> print us<br/>中文<br/><br/>★七、list对象<br/>>>> l = ['a', 2, [6, 7, 8]]<br/>>>> l<br/>['a', 2, [6, 7, 8]]<br/>>>> l[2][0]<br/>6<br/><br/>★八、LIST对象定义<br/>>>> l = []<br/>>>> l<br/>[]<br/>>>> l = [1]<br/>>>> l<br/>[1]<br/>>>> l = [1, 2, 3]<br/>>>> l<br/>[1, 2, 3]<br/>>>> l = list() #这会不会让您想起C++语法？<br/>>>> l<br/>[]<br/><br/>★九、等差数列range(x)，就可以生成一个0到x的前闭后开的自然数列list，经常用到for中，很有用。<br/>a=range(0,10,1)<br/>print a<br/>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<br/><br/>a=range(2,10,1)<br/>print a<br/>[2, 3, 4, 5, 6, 7, 8, 9]<br/>★十、对象引用，str跟list的区别；<br/>str引用：<br/>>>> s = 'abcdefghijklmnopqrstuvwxyz'<br/>>>> a = s<br/>>>> id(s)<br/>12502984<br/>>>> id(a)<br/>12502984<br/>>>> a += 'abc'<br/>>>> a<br/>'abcdefghijklmnopqrstuvwxyzabc'<br/>>>> s<br/>'abcdefghijklmnopqrstuvwxyz'<br/>>>> id(s)<br/>12502984<br/>>>> id(a)<br/>11783488<br/>因为其中一个对象值发生变化，内存空间将开辟新空间存放。因为str具有只读的的特证；<br/><br/>list引用：<br/>>>> l = ['a', 'b', 'c']<br/>>>> x = l<br/>>>> x += ['a', 'b', 'c']<br/>>>> x<br/>['a', 'b', 'c', 'a', 'b', 'c']<br/>>>> l<br/>['a', 'b', 'c', 'a', 'b', 'c']<br/><br/>list对象可写，l,x的值都共享同一内存块；当一个值发生变化时，两个值都发生变化；<br/>那如何复制list对象呢？通过[:]方法：<br/><br/>>>>l = ['a', 'b', 'c']<br/>>>>x=l[:]<br/>>>>x+=['e','d','f']<br/>>>>print l,'&#92;n&#92;n',x<br/>['a', 'b', 'c'] <br/>['a', 'b', 'c', 'e', 'd', 'f']<br/><br/>★十一、list对象常用方法(链表)：<br/>l = ['a', 'b', 'c','d','e']<br/>print dir(l)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #显示当前对象的方法<br/>print l.count('a') #输出list中字符'a'的个数<br/>l.append('liu')&nbsp;&nbsp;&nbsp;&nbsp;#在list最后添加一个'liu'元素 <br/>l.insert(3,'3')&nbsp;&nbsp;&nbsp;&nbsp;#在索引3位置插入一个字符'3'<br/>l.__len__()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#显示list的大小，元素数<br/>l.remove('a')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#显示list中第一个字符'a'<br/>l.sort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #对list进行排序<br/>print l.index('c') #显示list中第一个'c'字符的索引位置<br/><br/>★十二、list对象常用方法(堆栈)：<br/>l = ['a', 'b', 'c','d','e']<br/>l.append('8')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#相当于进栈<br/>运行结果：['a', 'b', 'c','d','e','8']<br/>l.pop()&nbsp;&nbsp;&nbsp;&nbsp; #相当于出栈<br/>运行结果：['a', 'b', 'c','d','e']<br/><br/>★十三、list对象常用方法(对列)：<br/>l = ['a', 'b', 'c','d','e']<br/>l.append('8')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#入队<br/>运行结果：['a', 'b', 'c','d','e','8']<br/>l.pop(0)&nbsp;&nbsp;&nbsp;&nbsp;#前面元素出队<br/>运行结果：['b', 'c','d','e','8']<br/><br/>★十四、list对象常用方法(列表推导式,列表推导式是一种通过函数化的编程方式简洁的构造list的方法。这是一种强有力的表达方式。)：<br/>l = [c for c in range(10)]<br/>print l<br/>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<br/><br/>★十五、tuple，元组<br/>实际上可以把我看做是一个只读的list。构造tuple实例很简单，可以用()标示的序列就<br/>是一个tuple：<br/>>>> tu = (1, 2, 3, 4, 5)<br/>>>> tu<br/>(1, 2, 3, 4, 5)<br/>>>> type(tu)<br/><type 'tuple'><br/><br/>也可以直接使用tuple构造函数，通常使用这种方法自list中构造我的对象，当然，也可<br/>以直接使用生成器推导式：<br/>>>> x = tuple([235, 224, 120])<br/>>>> x<br/>(235, 224, 120)<br/>>>> x = tuple(x**2 for x in range(1, 4))<br/>>>> x<br/>(1, 4, 9)<br/><br/>因为我也是COW(copy on write)的，就像str那样，所以修改一个tuple变量不会影响其它引用：<br/>>>> x = tuple(x**2 for x in range(1, 4))<br/>>>> x<br/>(1, 4, 9)<br/>>>> y = x<br/>>>> id(x)<br/>12665560<br/>>>> id(y)<br/>12665560<br/>>>> x += (6,) #注意这个单元素tuple的定义<br/>>>> x<br/>(1, 4, 9, 6)<br/>>>> id(x)<br/>11371888<br/>>>> y<br/>(1, 4, 9)<br/>>>> id(y)<br/>12665560<br/><br/>注意上例中，为x添加一个单元素tuple时，在元素后面加了一个逗号，这样解释器就<br/>可以正确区分出这是一个tuple。<br/>像x, y = a, b这样的形式，解释器会将其转为tuple进行计算，然后再分解为单独的元素，<br/>这称为tuple封装和解封。由于这种语句广泛应用于交换变量、函数返回值和传值等应用，<br/>Python的解释器不断对其进行优化，现在的封装和拆封操作已经效率很高了。例如，在<br/>Python2.5中使用a, b = b, a 交换变量值，比tmp = a; a = b; b = tmp更快。<br/><br/>*字符串转元组方法：<br/>1、tuple(int(s) for s in '(1,2,3,4)'[1:-1].split(','))<br/>2、eval('(1,2,3,4)', dict(__builtins__=None))<br/>(1, 2, 3, 4)<br/><br/>★十六、SET是一个不重复的元素集合。可以通过调用set(...)构造函数来生成set对象。传入的重复元素会自动合并。我还支持交、并、差、补等操作<br/>s=[1,2,3,4,5,6,2,5]<br/>s1=[1,2,8]<br/>n=set(s)<br/>m=set(s1)<br/>print type(n)<br/>print "n:",n<br/>print "m:",m<br/>print "差n-m:",n-m<br/>print "差m-n:",m-n<br/>print "交n&m:",n&m<br/>print "交m&n:",m&n<br/>print "并n&#124;m:",n&#124;m<br/>print "并m&#124;n:",m&#124;n<br/>print "补n^m:",n^m<br/>print "补m^n:",m^n<br/><br/>运行结果：<br/><type 'set'><br/>n: set([1, 2, 3, 4, 5, 6])<br/>m: set([8, 1, 2])<br/>差n-m: set([3, 4, 5, 6])<br/>差m-n: set([8])<br/>交n&m: set([1, 2])<br/>交m&n: set([1, 2])<br/>并n&#124;m: set([1, 2, 3, 4, 5, 6, 8])<br/>并m&#124;n: set([1, 2, 3, 4, 5, 6, 8])<br/>补n^m: set([3, 4, 5, 6, 8])<br/>补m^n: set([3, 4, 5, 6, 8])<br/><br/>★十七、dict，字典<br/>字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿，即，我们把键（名字）和值（详细情况）联系在一起。注意，键必须是唯一的，就像如果有两个人恰巧同名的话，你无法找到正确的信息。<br/>注意，你只能使用不可变的对象（比如字符串）来作为字典的键，但是你可以把不可变或可变的对象作为字典的值。基本说来就是，你应该只使用简单的对象作为键。<br/>键值对在字典中以这样的方式标记：d = &#123;key1 : value1, key2 : value2 &#125;。注意它们的键/值对用冒号分割，而各个对用逗号分割，所有这些都包括在花括号中。<br/>例子：<br/>dt=&#123;&nbsp;&nbsp;&nbsp;&nbsp; 'a':'1',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'b':'2',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'c':'3',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'd':'4',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'e':'5',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'f':'6'<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/>dt["g"]='7'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加/修改元素<br/><br/>del dt["f"]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除f元素<br/><br/>for name,key in dt.items():&nbsp;&nbsp; #遍历字典<br/>&nbsp;&nbsp;&nbsp;&nbsp;print "user name:%s,user key:%s" %(name,key)<br/><br/><br/>if 'd' in dt:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#以两种判断字典元素<br/>&nbsp;&nbsp;&nbsp;&nbsp;print dt['d']<br/>if dt.has_key('d'):<br/>&nbsp;&nbsp;&nbsp;&nbsp;print dt['d']<br/><br/><br/>运行结果：<br/>&#123;'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'&#125;<br/>user name:a,user key:1<br/>user name:c,user key:3<br/>user name:b,user key:2<br/>user name:e,user key:5<br/>user name:d,user key:4<br/>user name:g,user key:7<br/>4<br/>4<br/><br/>★十八、异常捕获与处理<br/>try:#(定义捕获异常块)<br/>&nbsp;&nbsp;&nbsp;&nbsp;x = int(raw_input('请输入一个整数:'))<br/>&nbsp;&nbsp;&nbsp;&nbsp;if x%2==0:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "%d是一个偶数" %(x)<br/>&nbsp;&nbsp;&nbsp;&nbsp;elif x%3==0:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "%d是一个奇数，可以被3整除" %(x)<br/>&nbsp;&nbsp;&nbsp;&nbsp;else:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "%d是一个奇数" %(x)<br/>except:#(所有捕获异常信息)<br/>&nbsp;&nbsp;&nbsp;&nbsp;print "异常错误信息:", sys.exc_info()[0], sys.exc_info()[1]<br/>else: #(如果无异常则被执行)<br/>&nbsp;&nbsp;&nbsp;&nbsp;print "程序运行没问题"<br/>finally:#(不管有无异常都会被执行)<br/>&nbsp;&nbsp;&nbsp;&nbsp;print "程序运行完毕！"<br/><br/>★十九、类<br/><textarea name="code" class="python" rows="15" cols="100">
class myClass:
&nbsp;&nbsp;&nbsp;&nbsp;count=0
&nbsp;&nbsp;&nbsp;&nbsp;m=0
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self,x,y):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.x=x
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.y=y
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.z=x*y
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myClass.count+=1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.m+=1
&nbsp;&nbsp;&nbsp;&nbsp;def getV(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.z
&nbsp;&nbsp;&nbsp;&nbsp;def getCV(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print myClass.count
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print self.m

print myClass(8,8).getV()
print myClass(5,8).getV()
p=myClass(20,20)
p.getCV()
</textarea><br/>运行结果：<br/>64<br/>40<br/>3<br/>3<br/>注意类变量与对象属性(对象变量)的区别，对象属性只对当前对象起作用，类变量为全局；<br/><br/>★继承<br/>一个简单的例子：<br/><textarea name="code" class="python" rows="15" cols="100">
class SchoolMember:
&nbsp;&nbsp;&nbsp;&nbsp;'''Represents any school member.'''
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, name, age):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name = name
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.age = age
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print '(Initialized SchoolMember: %s)' % self.name

&nbsp;&nbsp;&nbsp;&nbsp;def tell(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Tell my details.'''
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 'Name:"%s" Age:"%s"' % (self.name, self.age),

class Teacher(SchoolMember):
&nbsp;&nbsp;&nbsp;&nbsp;'''Represents a teacher.'''
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, name, age, salary):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchoolMember.__init__(self, name, age)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.salary = salary
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print '(Initialized Teacher: %s)' % self.name

&nbsp;&nbsp;&nbsp;&nbsp;def tell(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchoolMember.tell(self)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 'Salary: "%d"' % self.salary

class Student(SchoolMember):
&nbsp;&nbsp;&nbsp;&nbsp;'''Represents a student.'''
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, name, age, marks):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchoolMember.__init__(self, name, age)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.marks = marks
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print '(Initialized Student: %s)' % self.name



&nbsp;&nbsp;&nbsp;&nbsp;def tell(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchoolMember.tell(self)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 'Marks: "%d"' % self.marks



t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)

print # prints a blank line

members = [t, s] #原来列表的成员也可以是一个对象，呵呵；
for member in members:
&nbsp;&nbsp;&nbsp;&nbsp;member.tell() # works for both Teachers and Students
</textarea><br/>运行结果：<br/>(Initialized SchoolMember: Mrs. Shrividya)<br/>(Initialized Teacher: Mrs. Shrividya)<br/>(Initialized SchoolMember: Swaroop)<br/>(Initialized Student: Swaroop)<br/><br/>Name:"Mrs. Shrividya" Age:"40" Salary: "30000"<br/>Name:"Swaroop" Age:"22" Marks: "75"<br/><br/><br/>-----------------------yum方式升级至python2.7--------------------------------------<br/>1、下载nux 的release文件<br/>rpm -ivh http://li.nux.ro/download/nux/dextop/el6/i386/nux-dextop-release-0-2.el6.nux.noarch.rpm<br/>yum -y install python27<br/>yum -y install python27-devel<br/><br/>2、更新python可执行文件<br/>Centos默认还是使用python2.6.*,需要用python2.7的文件覆盖python文件。<br/>cd /usr/bin/<br/>rm -rf python<br/>cp python2.7 python<br/><br/>3、由于yum没有兼容python2.7，需要将下面红色的部分由 #!/usr/bin/python 修改为 #!/usr/bin/python2.6。<br/>vi /usr/bin/yum<br/><br/>将<br/>#!/usr/bin/python<br/>修改为：<br/>#!/usr/bin/python2.6<br/>Tags - <a href="https://blog.liuts.com/tags/python/" rel="tag">python</a> , <a href="https://blog.liuts.com/tags/%25E5%25AD%25A6%25E4%25B9%25A0%25E7%25AC%2594%25E8%25AE%25B0/" rel="tag">学习笔记</a>
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post//#blogcomment</link>
<title><![CDATA[[评论] 我的python学习笔记]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://blog.liuts.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>