美文网首页
Python基础学习手记

Python基础学习手记

作者: Mered1th | 来源:发表于2018-01-07 20:11 被阅读0次

    学习python快2个星期了,从刚开始看Learn Python the Hard Way开始,翘完前40例代码,后面的案例难度就大幅增加,于是转学小甲鱼的Python。目前刚看完前52集的基础篇,简单记录了些知识点。


    1、member[1:4] #第2个元素到第三个元素,即member[1]、member[2]

    2、列表操作:

    list3.count(123) #计算列表中123出现的次数

    list3.index(123) #索引列表中123第一次出现的位置

    list3.index(123,3,7) #从3到7中索引123第一次出现的位置

    list3.reverse() #列表反转

    list3.sort() #从小到大排序

    list3.sort(reverse(true))

    3、字符串操作:

    capitalize() #把字符串的第一个字符改为大写

    casefold() #把整个字符串的所有字符改为小写

    center(width) #将字符串居中,并使用空格填充至长度width的新字符串

    count

    endswith(sub[,start[,end]]) #检查字符串是否以sub字符串结束

    expandtabs([tabsize=8]) #把字符串中的tab符号(\t)转换为空格,默认的空格数是tabsize=8

    find (sub[,start[,end]) #检测sub是否包含在字符串中,返回索引值

    index(sub,[,start[,end]])

    join(sub) #以字符串作为分隔符,插入到sub中所有的字符之间

    partition(sub) #找到子字符串sub,把字符串分成一个3元组

    replace(old,new[,count])

    rfind(sub,[,start[,end]]) #类似于find,从右开始查找

    rstrip() #删除字符串末尾的空格

    split() #字符串自动切片,默认为空格

    strip([chars])#删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选

    swapcase() #翻转字符串中的大小写

    translate(table)

    4、函数内嵌、闭包

    def FunX(x):
    
      def FunY(y):
    
        return x*y
    
    return FunY
    
    

    调用: Funx(8)(5) ,输出为40.

    i)如果希望在函数中修改全局变量,关键词:global

    ii)在嵌套的函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字呢? 关键词: nonlocal

    
    def outside():
    
      print('I am outside!')
    
      def inside():
    
        print ('I am inside!')
    
    inside()  #会报错
    
    

    正确调用:

    
    def outside():
    
      print('I am outside!')
    
      def inside():
    
        print ('I am inside!')
    
      inside()
    
    outside()
    
    

    使用嵌套函数要注意一点就是作用域问题,inside()函数是内嵌在outside()函数中的,所以除了outside()可以调用,在外边或者别的函数体里是无法对其进行调用的

    6、函数 lambda

    EX:

    g = lambda x :  2 * x  +  1
    g(5)
    

    7、内建函数bif(很多,不一一列举)
    (1)filter ----过滤器

    Ex: 过滤偶数

    def odd(x):
        return x%2
    
    temp = range(10)
    show = filter(odd,temp)
    list(show)
    ---------------------------------------------
    list(filter(lambda x: x%2, range(10)))
    

    (2)map ----映射

    list(map(lambda x :x*2,range(10)))
    

    8、函数zip

    >>>list(zip([1,3,5,7,9],[2,4,6,8,10]))
    [(1,2),(3,4),(5,6),(7,8),(9,10)]
    

    函数map

    >>>list(map(lambda x,y :[x,y],[1,3,5,7,9],[2,4,6,8,10]))
    [[1,2],[3,4],[5,6],[7,8],[9,10]]
    

    9、递归
    hanoi、 fibonacci

    # -*- coding: cp936 -*-
    def hanoi(n,x,y,z):
        if n==1:
            print(x,'-->',z)
        else:
            hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y上
            print(x,'-->',z)#将最底下的最后一个盘子从x移动到z上
            hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
    
    n = int(input('请输入汉诺塔的数量:'))
    hanoi(n,'X','Y','Z')
    

    10、字典操作

    popitem() #(随机)弹出,字典中元素没有顺序

    setdefault() #Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

    update :

    #!/usr/bin/python3
    dict = {'Name': 'Runoob', 'Age': 7}dict2 = {'Sex': 'female' }
    dict.update(dict2)print ("更新字典 dict : ", dict)
    

    更新字典 dict : {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}

    fromkeys():

    >>>dict1.fromkeys((1,2,3),'Number')
    {1:'Number',2:'Number',3:'Number'}
    

    获取字典的item\value\key :items()、values()、keys()

    11、文件

    r 以只读方式打开文件

    w 写入

    a 写入模式打开,若存在则末尾追加

    x 如果已存在,打开将发生异常

    b 二进制模式打开

    t 以文本模式打开

    • 可读写模式

    U 通用换行符支持

    f.close() 关闭文件

    f.read(size=-1) 从文件读取size个字符,当 未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回

    f.readline() 以写入模式打开,如果文件存在则在末尾追加写入

    f.write(str) 将字符串str写入文件

    f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象

    f.seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节

    f.tell() 返回当前在文件中的位置

    12、模块

    os模块中关于文件/目录常用的函数使用方法

    函数名 使用方法
    getcwd() 返回当前工作目录

    chdir(path) 改变工作目录

    listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)

    mkdir(path) 创建单层目录,如该目录已存在抛出异常

    makedirs(path) 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b'和'E:\a\c'并不会冲突

    remove(path) 删除文件

    rmdir(path) 删除单层目录,如该目录非空则抛出异常

    removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

    rename(old, new) 将文件old重命名为new

    system(command) 运行系统的shell命令

    walk(top) 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])


    以下是支持路径操作中常用到的一些定义,支持所有平台
    os.curdir 指代当前目录('.')

    os.pardir 指代上一级目录('..')

    os.sep 输出操作系统特定的路径分隔符(Win下为'\',Linux下为'/')

    os.linesep 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')

    os.name 指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')


    os.path模块中关于路径常用的函数使用方法

    函数名 使用方法
    basename(path) 去掉目录路径,单独返回文件名

    dirname(path) 去掉文件名,单独返回目录路径

    join(path1[, path2[, ...]]) 将path1, path2各部分组合成一个路径名

    split(path) 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

    splitext(path) 分离文件名与扩展名,返回(f_name, f_extension)元组

    getsize(file) 返回指定文件的尺寸,单位是字节

    getatime(file) 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    getctime(file) 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    getmtime(file) 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    以下为函数返回 True 或 False
    exists(path) 判断指定路径(目录或文件)是否存在

    isabs(path) 判断指定路径是否为绝对路径

    isdir(path) 判断指定路径是否存在且是一个目录

    isfile(path) 判断指定路径是否存在且是一个文件

    islink(path) 判断指定路径是否存在且是一个符号链接

    ismount(path) 判断指定路径是否存在且是一个挂载点

    samefile(path1, paht2) 判断path1和path2两个路径是否指向同一个文件

    13、pickle

    将字符串、列表元组等以二进制形式写入

    my_list = [123, 3.14, '小甲鱼', ['another list']]
    pickle_file = open('my_list.pkl','wb')
    pickle.dump(my_list,pickle_file)
    pickle_file.close()
        
    pickle_file = open('my_list.pkl','rb')
    my_list2 =pickle.load (pickle_file)
    print(my_list2)
    

    14、 封装 继承 多态


    单词解释:

    class(类):告诉python去创建一个新类型。

    object(对象):有两种意思,事物的基本类型,或者事物的实例化。

    instance(实例):你通过python创建一个类所获得的。

    def:用来在类中定义一个函数。

    self:在一个类包含的函数中,self是一个用来访问实例或对象的变量。

    inheritance:概念,表示一个类可以继承另一个类的特征,就像你和你的父母。

    composition:概念,表示一个类可以包含其他类,就像汽车轮子。

    attribute:类所拥有的特性,通常是变量。

    is-a:惯用语,表示一个东西继承自另一个东西(a),像在“鲑鱼”是“鱼”。

    has-a:惯用语,表示由其他事情或有一个特征(a),如“鲑鱼有嘴。”

    短语解释

    class X(Y):创建一个叫X的类,并继承Y。

    class X(object): def init(self, J):类X有一个init方法,该方法有self和J两个参数。

    class X(object): def M(self, J):类X有一个叫M的函数,该函数有self和J两个参数。

    foo = X():给foo赋值为类X的一个实例。

    foo.M(J):从foo里调用M函数,传递的参数为self和J。

    foo.K = Q:从foo里调用K属性,并将其设置为Q。


    15、init(self)
    类似于构造函数

    super() 用于继承所有父类的函数

    super(父类,self).__init__()
    

    组合

    class Turtle:
        def__init__(self,x):
            self.num=x
    class Fish:
        def __init__(self,x):
            self.num =x
    class Pool:
        def __init__(self,x,y):
        self.turtle=Turtle(x)
        self.fish=Fish(y)
    

    16、描述符(property的原理)

    class Celsius:
        def __init__(self, value =26.0):
            self.value = float(value)
    
        def __get__(self,instance,owner):
            return self.value
    
        def __set__(self,instance,value):
            self.value = float(value)
    
    class Fahrenheit:
        def __get__(self,instance,owner):
            return instance.cel*1.8+32
    
        def __set__(self,instance,value):
            instance.cel= (float(value)-32)/1.8
    
    class Temperature:
        cel = Celsives()
        fah = Fahrenheit()
    
    class Temperature:
        cel = Celsius()
    
    

    17、可变长定制列表

    class CountList(list):
        def __init__(self,*args):
            super(CountList,self).__init__(args)
            self.count = []
            for i in args:
                self.count.append(0)
    
        def __len__(self):
            return len(self.count)
    
        def __getitem__(self,key):
            self.count[key] += 1
            return super(CountList,self).__getitem__(key)
    
        def __setitem__(self,key,value):
            self.count[key] +=1
            super(CountList,self).__setitem__(key,value)
    
        def __delitem__(self,key):
            del self.count[key]
            super(CountList,self).__delitem__(key)
    
        def count(self,key):
            return self.count[key]
    
        def append(self,value):
            self.count.append(0)
            super(CountList,self).append(value)
    
        def pop(self, key=-1):
            del self.count[key]
            return super(CountList,self).pop(key)
    
        def remove(self,value):
            key = super(CountList,self).index(value)
            del self.count[key]
            super(CountList,self).remove(value)
    
        def insert(self,key,value):
            self.count.insert(key,0)
            super(CountList,self).insert(key,value)
    
        def clear(self):
            self.count.clear()
            super(CountList,self).clear()
    
        def reverse(self):
            self.count.reverse()
            super().reverse()
    

    相关文章

      网友评论

          本文标题:Python基础学习手记

          本文链接:https://www.haomeiwen.com/subject/rzymnxtx.html