python学习中级,纯代码学习版

来源:互联网 发布:linux创建属性目录命令 编辑:程序博客网 时间:2024/06/06 01:24
参考自


http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431928972981094a382e5584413fa040b46d46cce48e000


#map(fun,list)print (list(map(str,list(range(10)))))print (map(str,range(10)))#将字符串数字转化为intfrom functools import reducedef str2int(s):    def fn(x, y):        return x * 10 + y    def char2num(s):        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]    return reduce(fn, list(map(char2num, s)))print (str2int('123')) #map(fun,l1) 对list中所有数执行函数fundef change(s):return s[0].upper()+s[1:].lower()l=['lias','DDVd','FAs']l2=map(change,l)print (list(l2))#reduce(fun,l2) 对list中所有数累计执行fun,fun(x,y)def prod(l):def pro(x,y):return x*yreturn reduce(pro,l)print (prod([1,2,3])) #累乘 6#filter(fun,list) fun函数返回true则保留,否则舍弃def is_odd(n):return n%2==0print (list(filter(is_odd,[1,2,3,4,5,6]))) #2,4,6print (sorted(['A','c','B','d'],key=str.lower))print (sorted(['A','c','B','d'],key=str.lower,reverse=True))L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def cmp(x):return x[0]print (sorted(L,key=cmp))#匿名函数 lambda x :x*x    == def x: return x*xprint (list(map(lambda x:x*x,[1,2,3])))#类,,在函数或变量前加__就是定义为内部变量class Stu(object):def __init__(self,name,score):self.name=name#self.__name=name 内部变量外部不能通过stu.__name访问self.score=scoredef print_sco(self):print ('%s: %d'% (self.name,self.score))def get_grade(self):if (self.score>=90):return 'a'else:return 'not a'stu = Stu('baiy',90)stu.print_sco()stu.__name='xxx'  #可以通过此方式为类添加成员变量,但是不是内部的print (stu.__name)class Animal(object):def run(self):print ('ani is run')class Dog(Animal):passclass Cat(Animal):def run(self):print ('cat is run')dog=Dog()dog.run() #ani is runcat=Cat()cat.run() #cat is run 覆盖type(123)==type(456) #Truetype(123)==int #Truetype('abc')==type('123') #Truetype('abc')==str #Truetype('abc')==type(123) #Falsedir('ABC') #获取对象的所有属性和方法len('ABC') == 'ABC'.__len__() #所有想调用len(),只需要在类中实现__len__()函数#类属性和实例属性class Student(object):name = 'Student's = Student() # 创建实例sprint(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性#Studentprint(Student.name) # 打印类的name属性Students.name = 'Michael' # 给实例绑定name属性print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性#Michaelprint(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问#Studentdel s.name # 如果删除实例的name属性print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了#Student#给实例绑定一个方法 只对此实例有效s = Student()def set_age(self,age):self.age=agefrom types import MethodTypes.set_age=MethodType(set_age,s)s.set_age(25)print (s.age)#给类绑定一个方法,对所有实例有效def set_sex(self,sex):self.sex=sexStudent.set_sex=set_sexs.set_sex('man')print(s.sex)#__slots__现在成员变量class People(object):__slots__=('name','age')peop=People() #peop.x=100 错误#property用法class Student(object):    @property    def birth(self):        return self._birth    @birth.setter    def birth(self, value):        self._birth = value    @property    def age(self):        return 2015 - self._birth#多重继承class Runnable(object):passclass Dog(Animal,Runnable):passf=open('text.txt','r')ss=f.readline()s=f.readlines()print(ss)print (s)print (s[3]=='\n')f.close()f = open('test.txt', 'w')f.write('Hello, world!')f.close()#stringiofrom io import StringIOf = StringIO()f.write('hello')f.write(' ')f.write('world!')print(f.getvalue())#hello world!

0 0
原创粉丝点击