0
点赞
收藏
分享

微信扫一扫

python入门基础--数据类型--循环控制--函数--OOP


一、Python基本数据类型

                    集合,数字,字符串,列表,元组,字典(集合几人捏圆子)
                    
                    python基本数据类型:number, None,  bool, str
                    python容器类型:       list,   tuple, dict, set

二、print格式化输出

print 连接符: + ,
print ''.format()


print('他的身高是 %-8.2f厘米' % 180.222)
print('%s 的身高是 %-8.2f厘米' % ('her',180222))

print('{}的身高是{}厘米'.format('her',180222))
print('{0}的身高是{1}厘米'.format('her',180222))
print('{1}的身高是{0}厘米'.format(180222,'her'))

    占位符:             %d整数        %s字符串              %f浮点型
    占位符宽度:      %10d     占10个位置的整数,    默认居右
                               %-10d    占10个位置的整数,    默认居左
                   
    format:             '{:20}{:24}{:28}'.format('str1','str2','str3')
                            '{:^20}{:^24}{:^28}'.format('str1','str2','str3')#占位符居中
    
    连接符:        print('',sep = '-')
   
    输出:            raw_input()        得到字符串        #只能在python2.x用
                           input()            得到处理后的结果,一般是number类型

三、中文输出问题:

                    import json
        
                    print(json.dumps(tup/dict).decode("unicode-escape"))
                    print 格式化字符串  %d(整型)    %s(字符串)    %f(浮点型)

四、数据类型

    list:            list[]        可以存放number    bool    str1    list    tuple
                     list()        将str转换成list
        
                    append()    在list结尾添加新元素
                    del()           删除元素,一个,区间元素,删除整个列表
                                      del list1[2:]        del list2[:5]
                    读取list        list[1]    list[-1]    list[1,3]
        
    tuple()元组         tuple1 = (,)    tuple2 = "a","b","c"    
                              注意:a = ('hello')不是元组
                                        a = ('hello',)才是。不可更改元素里面的值

    dict{}         创建字典(几种方法):                    

dict1 = {}                                         #1.创建空字典
dict1['name3'] = 'wangmazi'

dict2{'name1':'zhangsan",'name2':'lisi'} #2.直接赋值创建

tup1 = (['name4','daaizi'],['name5','dsssaaizi']) #长度只能是两个
dict3 = dict(tup1) #3.通过二元组列表创建

dict4 = dict(zip('abc', [1, 2, 3])) #4.dict和zip结合创建

dict5 = {i:2*i for i in range(3)} #5.通过字典推导式创建

{}.fromkeys() #6.通过dict.fromkeys()创建
dict6 = {}.fromkeys(('key1','key2'),value1)

                    读取字典:print dict1['name1']
                    更改字典:dict2['name2']
                    删除字典:del dict1['name4']    
                                      dict2.clear
                                      del dict3
                    获取字典: key,value            
                                      dict.keys()
                                      dict.values()      

    set()        创建集合set():

                   set是一个无序且不重复的元素集合             #通过set() 函数创建

s1 = set("python")                          #把字符串变为集合
print(s1)

s2 = set([123,"python","face","book","face"])#把列表变为集合
print(s2)

s3 = set({"face",123}) #把字典变为集合
s4 = set{'name1':'zhangsan','age':[12,34,56]}
print(s3,s4)

                  将有重复元素的列表转为集合时,将无序排列,且自动去重

set1={11,22,33}
set2={22,55}
difference()方法
set1.difference(set2) #找到set1中存在,set2中不存在的集合,返回新的集合
set1.difference_updata(set2) #找到set1中存在,set2中不存在的集合,覆盖set1
intersection()方法
set1.intersection(set2) #取交集,返回新的集合
set1.intersection_updata(set2) #取交集并更新自己
判断:isdisjoint()、issubset()、issuperset()
set1.isdisjoint(set2) #判断是否不存在交集
set1.issubset(set2) #判断set1是否时set2的子集合
set1.issuperset(set2) #判断set1是否时set2的父集合
合并:symmertic_difference()
set1.symmertic_difference(set2) #取并集,并返回新的集合
set1.symmertic_difference_update(set2) #取并集,并更新自己
set1.updae(iterable)

五、循环控制 

        for 循环与 while循环
        for ...  :        while  ... :
        else:            else:
        for循环遍历两个列表:zip()函数
        zip()函数:

        zip()函数,将对象(可迭代)打包成一个个元组。然后返回由这些元组列表,则返回的列表长度由最短的对象决定。利用"*"操作符,可以将元组解压为列表。在python3.x版本中,将不再支持打印zip()函数的内容,返回值为一个内存地址

list1=[1,2,3,4]
list2=['a','b','c']
zip(list1,list2) -> [(1,'a'),(2,'b'),(3,'c')]

for a,b in zip(list1,list2):
print (a,'is', b)

     --> enumerate()

list1=['a','b','c','d','e','f','g']
for index,letter in enumerate(list1): #可用于同时获取索引和元素
print (index,'位是:',letter)

    -->循环控制

    break         # 一旦条件满足跳出整个循环
    continue    # 一旦条件满足,跳过本次循环
    pass          # 仅为保持结构完整性
 

    多值 互换:        a,b = b,a        #将b赋给a,将b赋给a

                          a,b,c = c,a,b    #将c赋给a,将a赋给b,将b赋给c   

判断输入的是否是number:            

                    .strip()       默认去掉开头结尾的空格
                    .strip('-')    指定去掉('-')符号
                    .isdigit()    判断输入的是否是number:
                     用法:     if a.strip().isdigit()
                                    
    三元运算取最大值:

                            a = x if x>y else y

    range()函数      range(10)           # 取0-9                    
                             range(2,9)          # 取2-8           
                            range(3,100,3)    # 取3-99,步长为3
       
    升级python(有多个版本的时候)                            
    win+r 输入cmd 执行命令            py -2 -m pip install --upgrade pip
                                                       py -3 -m pip install --upgrade pip
    bool值为false:None,     (),     0,
    
    输出1-100平方    print [x**2 for x in range(1,11)]
                                b = [x**2 for x in range(1,11)]
                                print (b)

    推导式:        list = [item for i in range(iterable)]

print [x for x in range(1,20,2)]                               #输出0-20的奇数
print [x for x in range(20) if x%2 ==0] #输出0-20的偶数,有判断的
print [index,item for index,item in enumerate(list(str))] #遍历输出列表

print [x for x in list[]] #直接遍历列表

    python 参数传递    
                    Tuples string number 值传递不可更改
                    list         等参数传递可以改变

六、函数       

    定义:            def functionname(arg1,arg2,*args,**kwargs):
                             执行语句
                        return                 # 本身结束函数,后面的所有语句都不会执行
                                                  # 返回值
                                                  # 可用于闭包,返回函数
                    执行函数:

                    functionname(arg1,arg2,a =2,c='33')                      

def functionname1(num1,num2,*args,**kwargs):
sum1 = num1+num2+sum(args)
for i in args:
pass
return sum1
functionname1(1,2,3,4,5,a = '12',b = '23')

    参数传递   必要参数    def funcA(str):

                    关键参数    def funcB(str = ''):
                    缺省参数    def funcC(x,y,z = 15):
                                                    funcC(20,10)
                    不定长参数    def funcD(str1,str2,*args,**args):
                                          *args    元组形式(a,b,c,d)
                                          **args    字典形式(a = 'b',c = 'd')
                    ----------------------------------------------------------------------------------                    
                    值传递不可更改    str  number    tuple
                     引用传递        list [:]    dict    #list[:],复制时不会修改原list

    调用函数        functionname()    里面放参数,否则报错
          
    变量            全局变量    total
                       局部变量    def funcA():内的变量
                                          若想使用全局变量 global total
        
                    模拟range()、sum()方法
                        return 返回值
                        每个函数执行的结果都是默认的 return
                        return 结果
                        return 固定的
                        return None
                        return 结束函数

    lambda(匿名函数):

filter(functionname,list[])
list1 = [1,2,3,4,5,6,7,8,9,10]
print(list(filter(lambda x:x%2==0,list1)))

map(functionname,list[])
list1 = range(10)
list2 = map(lambda y:y**2,list1)
print list2 # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

list3 = map(lambda x,y:y+x,[1,2,3],[4,5,6])
print list3 # [5, 7, 9]

reduce(functionname,list[]) # reduce读取前两个list元素
list2 = reduce(lambda x,y:x+y,[1,2,3,4,5])
print list2

list3 = reduce(lambda x,y:x+y,[2,3,5,2],1)
print list3

    闭包函数        

def funA(x):
aa = 10
def funR():
return 2*aa+20
return funR()

print('------------利用闭包生成函数--------------')

def line_corf(a,b):
def line(x,y,z = 5):
return a*x+b*y+z
return line
if __name__ == "__main__":
line1 = line_corf(1,2)(2,4,1) # 举例运行
print (line1) # 运行结果x+2y+z;11
line2 = line_corf(5,2) # 生成函数

    对函数添加属性

print('----------对函数添加属性-----------')

def funcF(x, y, z):
print(x**2, y**2, z**2)

funcF.alert = "hello python"
funcF.hobby = ['play', 'eat']
funcF.pp = lambda: "hello word"
funcF(1, 2, 3) # 运行结果: 1,4,9
print (funcF.alert) # 运行结果: hello python
print (funcF.hobby) # 运行结果: ['play', 'eat']
print (funcF.pp()) # 匿名函数加括号 # 运行结果: hello word

 deractor(装饰器)                

                    扩展已有函数功能
                    装饰器:python函数熟练使用的分水岭            

def funA(funC):
def wrapper():
1.
f()
2.
3.
return f
return wrapper
@funA
def selfFun():
pass

约等于 funA(selfFun)



# ====实例:======
def deco(func):
def wrapper(a,b):
startTime = time.time()
func(a,b)
time.sleep(1)
endTime = time.time()
msecs = (endTime - startTime)*1000
print("运行时间: %f ms" %msecs)
return wrapper
@deco
def func(c,d):
print("运行结果是: %d" %(c+d))

if __name__ == '__main__':
f=func
f(3,4)

七、OOP(面向对象)              

class Meinv:
count = 0 #类的属性
sex = female
__private_value = '秘密'
def __init__(self,name,sex,age,aim): #每次实例化都会运行
self.name = name
self.age = age
self.aim = __pricvate_value.aim
Meinv.count+=1
def goodOpera():
print '我会qingqishuhua'
def showCount():
print '已经有',Meinv.count,'beautiful girl'

if __name__ == '__main__':
#实例化对象
girl = meinv(diaocan,while)
girl.goodOpera()
Meinv.goodOpera()

gir2 = meinv(wangzhanjun,while)
gir2.goodOpera()
Meinv.showCount()
Meinv.goodOpera.name

私有变量特征:  __private_value       外部不能访问

    公有变量特征:  public                    外部可以访问
                    getattr(object,'name',...)         获取属性
                    setattr(object,'name',value)      设置属性
                    hasattr(object,'name')              是否有这个属性
                    delattr(object,'name')               删除属性

    函数类可以使用外部函数
                    def aaa():
                        range()
                    不要轻易的让
                        a = aaa()    这不是函数赋值,这是函数的结果

                        a = aaa      这才是函数

八、继承与多重继承

    定义类并继承:

实例1:
class Student(object): #这是一个学生类
schoo1='清华大学' #类的属性,所有类的对象共享
count=0 #用于计数
def __init__(self,name,age,score): #类的构造函数或初始化方法,
self.name=name # 实例化对象的时候,__init__()方法都会默认被运行
self.age=age
self.score=score
self.count+=1 # 对象计数,对象自己的属性
Student.count+=1 # 每有对象产生时+1,类的属性
def counter(self): # 定义计数方法
print (self.name+'是'+self.schoo1+'第'+str(self.count)+'个学生!')
print('目前学校有',Student.count,'个学生!')

if __name__ == '__main__':
stu1=Student('张三',20,98.5) # 实例化对象
stu2=Student('李四',21,89.5)
stu3=Student('王五',21,89.5)
stu1.counter() # 张三是清华大学第1个学生!\n目前学校有 3 个学生!
stu2.counter() # 李四是清华大学第2个学生!\n目前学校有 3 个学生!
stu3.counter() # 王五是清华大学第3个学生!\n目前学校有 3 个学生!


实例2 继承实例1:
class HighSchool(Student):
schoo1='清华附中' # 修改派生类的类属性
def __init__(self,name,age,score,uniform): # 派生类构造方法
super(HighSchool, self).__init__(name,age,score) # 继承自基类固定写法 #表示继承基类的name,age,score属性(须全部写一遍)
self.uniform=uniform # 继承类新增的属性
if __name__ == '__main__':
stu1=Student('张三',20,98.5) # 基类对象1
stu2=Student('李四',21,89.5) # 基类对象2
stu1.counter() # 基类对象调用基类counter()方法
stu2.counter()
hs1=HighSchool('小明',12,98.5,'L') # 派生类对象1
hs2=HighSchool('小红','13',98.5,'M') # 派生类对象2
hs1.counter() # 派生类没有覆写基类方法,故调用基类方法

# 输出结果:
# 张三是清华大学第1个学生!
# 目前学校有 2 个学生!
# 李四是清华大学第2个学生!
# 目前学校有 2 个学生!
# 小明是清华附中第3个学生!
# 目前学校有 4 个学生!

类的属性

      操作类的属性
            getattr(obj,'name'[,default])    访问对象的属性
            hasattr(obj,'name')                 检查是否存在一个属性
            setattr(obj,'name')                  设置一个属性,如果属性不存在,会创建一个新属性
            delattr(obj,'name')                  删除属性
      内置类属性
            __dict__               类的属性(包含一个字典,由类的数据属性组成)
            __doc__               类的文档字符串
            __name__            类名
            __module__         类定义所在的模块
            __bases__           类的所有父类构成元素(包含了一个由所有父类组成的元组
      类的私有属性和私有方法:
          类的私有属性 __private_attrs:
                两个下划线开头,声明该属性为私有,不能在类的外部被使用或 直接访问。
                在类内部的方法中使用时 self.__private_attrs。
          类的方法:
                在类的内部,使用 def 关键字可以为类定义一个方法,
                与一般函数定义不同,类方法必须包含参数 self,且为第一个参数
          类的私有方法 __private_method:
                两个下划线开头,声明该方法为私有方法,不能在类地外部 调用。
                在类的内部调用 self.__private_methods

附加:python中不支持多态

举报

相关推荐

0 条评论