zoukankan      html  css  js  c++  java
  • Python简单操作笔记

    Python
        类型转换
           str(),repr()|format() : 将非字符类型转成子串
           int() : 转为整形
           float() : 转为浮点型
    
           list(s) : 将字串s转成列表
           tuple(s) : 将字串s转成元组
           set(s) : 将字串s转成集合
           frozenset(s) : 将字串s转成不可变集合
           dict(s) : 创建字典 其s必须是(key,value)的元组序列;
    
           chr(x) : 将整形转成字符
           ord(x) : 将字符转成整形
           hex(x) : 将整形转换成16进制字符
           bin(x) : 将整形转化成2进制
           oct(x) : 将整形转化成8进制
    
        数字类型
            Python的数字字面量 : 布尔型,整型,浮点型,复数
                True : 1
                False : 0
        序列类型
            字符类型
                字符串字面量 : 把文本放入单引号、双引号或三引号中(可以实现跨行定义)
            如果需要使用unicode编码,则在字符之前使用u进行标识,etc : u"luowen"
    
            文档字串 : 模块、类或函数的第一条语句如果是字符的话,该字符串就成为文档语句.必须保持严格的缩进
    
            字串操作
                str.islower() : 所有字符为小写,
                str.isupper() : 所有字符为大写
                str.upper() : 转换成大写
                str.lower() : 转换小写
                str.capitalize() : 首字母大写
                str.index(s,start) : s字符首次出现位置,start : 从start位置开始找
                str.replace(old,new,replaceTimes) : 字符替换
                str.split(s) : 已s做分割符分割
                s.join(str); : 以s做分割符,将列表组合成字串,str为序列
                str.strip(s) : 清楚一s开头或结尾的字符
    
        列表操作
            list.append(s); : 将一个元素append到list中 etc demo = [1,2,3] , s = [5,6]  result: [1,2,3,[5,6]]
            list.extend(list1); : 讲一个list1合并list中 result: [1,2,3,5,6]
            list.pop(s) : 将s从list中pop出来
            list.index(s) : 查找list中索引为s的值
            list.remove(s); : 删除列表list中值为s的元素
            list.reverse(); : 将list进行逆序 '在原处进行修改 修改地址'
            list.sort(); : 将list中的元素进行排序 '在原处进行修改 修改地址'
            list1 + list2 === list1.extend(list2) : 等同于extend
            s in t1 : 判断s是否在元组t1中
            s not in t1 : 判断s是否不在元组t1中
    
            列表复制方法
                l1 = [1,2,3,4]
                l2 = l1
    
                import copy
                l2 = copy.deepcopy(l1)
    
                l2 = l1[:]
    
        元组:
            表达式符号 : ()
    
            容器类型:
                任意对象的有序集合,通过索引访问其中的元素,不可变对象,长度固定,异构,嵌套
            常见操作:
                demo = () : 定义一个空元组
                demo = 'x','y','z' : 定义了一个'x y z' 的元组
                len(t) : 元组长度
                t1 + t2 : 两个元组合并
                s in t1 : 判断s是否在元组t1中
                s not in t1 : 判断s是否不在元组t1中
    
        字典 : dict
            字典在其他编程语言中又称作关联数组。
            通过键实现元素存取 : 无序集合 : 可变类型 : 长度可变 : 异构 : 嵌套
            etc.{key1:value1,key2:value2,....}
    
            空字典
                {},{'x' : '2323','y':[1,2,3,4]}
    
                dict1.copy() : 复制dict1字典
                dict1.get('key') : 获取字典中键为key的只
                dict1.pop('x') : 字典中弹出键为'x'个元素
                dict1.items() : 将字典列表中的数据转换成元组
                dict1.items() : 获取字典中所有的值
                dict1.keys : 获取字典中所有的key
                dict1.popitem() : 随机弹出键和值
                dict1.has_key('x')  : 字典中是否含有键为'x'
                dict1.update(dict2) : 等同于php中的array_merge() ,dict2中的值会覆盖dict1的值
                iterator = dict1.iteritems() : 获取迭代器 iterator.next();
    
                zip(tuple1,tuple2); : 将两个元组转成列表[(1,'x'),(2,'y')]
    
                dict1 = dict(zip(tuple1,tuple2)) : 生成一个字典
    
        集合SET:
            set1 = set(); : 构造一个set
            len(set1) : 返回s中的项目
            set1.copy : 复制set1集合
            set1.difference(set2) : 求差集 同set1 & set2
            set1.intersection(set2) : 求交际
            set1.isdisjoint(set2) : set1和set2有相同项返回True
    
        容器、类型、对象
            12、所有对象都有引用计数 sys.getrefcount(obj);
            3、列表和字典都支持潜复制和深复制,浅复制穿件一个新对象,对象里面的存放的对象没有发生变化,深复制:递归的全部复制对象(包括对象内部存放的对象)原有对象改变不会改变复制后的对象。copy.deepcopy()深复制
            4、Python中的所有对象都是“第一类”,这意味着所有对象都可以直接当做数据处理计算
            5、所有对象都支持迭代。
            6、所有序列都支持以下操作:
                s[i]
                s[i:j]
                s[i:j:stride]
                len(s)
                min(s)
                max(s)
                sum(s)
                all(s)
                any(s)
                s1 + s2 #链接
                s1 * N #重复
                obj in s1 #组成员
                obj not in s1
            7、可变序列操作
                s1[index] = value #元素赋值
                s1[i:j] = t #切片赋值
                del s1[index]
                del s1[i:j]
                del s1[i:j:stride]
    
    Python表达式和语句
        表达式 : 某事
        语句 : 做某事
    
        逻辑运算:
               x or y, x and y not x
    
        成员关系:
                x in y , x not in y
    
        对象实例测试:
                x is y , x not is y
    
        比较运算:
                x > y .......
    
        位运算:
                x | y , x & y , x ^ y , x << y , x >> y
    
        一元运算:
                -x , +x , ~x
    
        幂运算: 
            x ** y
    
        调用运算:
                x(........)
    
        属性取值:
                x.attribute
    
        三元选择表达式:
            x if y else z  同(x == y ? x : z)
    
        匿名函数:
            lambda argus : expression
    
        生成器发送协议: yield x
    
        优先级:
            (......),[.......] , {............}
            s[i] , s[i][j]
            s.attribute
            s(.....)
            +x,-x,~x
            x ** y
            * , / ,// , %
            +,-
            <<,>>
            &
            ^
            |
            <,<=,>,>=,==,!=
            is,not is
            in,not in
            not
            or
            lambda
    
        语句:
            复制语句
            调用语句
            print:
            if/elif/else
            while/else
            pass:占位符
            break
            continue
            def
            return
            yield
            global #命名空间
            raise #触发异常
            import
            from #模块属性访问
            class #
            try/except/finally #扑捉异常
            del #删除引用
            assert 调试检查
            with/as 循环管理器
    
        赋值语句:
            隐式复制: import,from,def,class,for,函数参数(arguments)
    
        生成序列:
            list1 = [i for i in range(1,11) if i % 2 == 0] #[2,4,6,8]
    
            l1 = ['x','y','z']
            l2 = [1,2,3]
            list2 = [(i,j) for i in l1 for j in l2] #多项式相成
    
            将[]换成()就生成了一个生成器了,可以对应的生成器对象的next()方法取出数据
    
    OS模块:
        目录:
            chdir() : 改变工作目录
            chroot() : 设定当前进程根目录
            listdir() : 列出所有文件名
            mkdir() : 创建目录
            makedirs() : 递归创建目录
            getcwd() : 获取工作目录
            rmdir() : 删除目录
            removedirs() : 删除多级目录
    
        文件:
            mkfifo() : 创建命名管道
            mknod() : 创建设备文件
            remove() : 删除文件
            unlink() : 删除文件
            rename() : 重命名
            stat() : 返回文件状态信息
            symlink() : 创建链接文件
            utime() : 更新文件时间戳
            tmpfile() : 创建并打开一个临时文件(打开模式是(w+b))
            walk() : 文件目录树
    
        权限:
            access('filename','userID') : 检验文件权限是否存在
            chmod('filename','modeNum') : 改变文件权限
            chown('filename','userID') : 改变宿主
            umask() : 设置默认访问权限(遮罩)
    
        文件描述符:
            open() : 底层操作系统的open()
            read() : 底层操作系统的read()
            write() : 底层操作系统的write
    
        设备文件:
            makedev() : 创建设备
            major('num') : 获取设备
            minor() :
    
    OS子模块os.path:
        basename() : 文件基名 #etc. /etc/sysconfig/network-scripts => /etc/sysconfig
        dirname() : 路径基名 # etc ... => network-scripts
        join() : 将多个离散的路径名合并成一个 
        split() : 分割文件名 返回dirname,basename 结果元组
        splitext() : 返回(filename,extension) 元组 #返回文件的名字,和后缀
    
        信息:
            getatime() : 获取文件atime
            getctime() : 获取文件ctime
            getmtime() : 获取文件mtime
            getsize() : 获取文件大小
    
        查询:
            exists() : 判断文件是否存在
            isabs() : 判断制定路径是否是绝对路径
            isdir() : 判断是否是目录
            isfile() : 判断是否是文件
            islink() : 判断是否是符号链接
            ismount() : 判断是否是挂载点
            samefile() : 两个路径是否指向了同一个文件
    
    对象序列化(持久存储):
        pickle() : 序列化
        marshal() : 序列化
    
        DBM接口:
    
    
    
    Python 函数:
        demo = 1
        def f1():
            print demo # 1
            global demo
            demo = 2
            print demo # 2
        print demo #没有加global修饰的时候值为1 加了global时候则变成2
    
        函数参数可变参数:
            def fn1(*x):
                    print x # 传入多个数据时候,x为元组
            def fn2(**x):
                    print x # 传入多个数据时候,x为字典
            
            调用分解参数:
                demo = [1,3,4,5,6]
                def fn3(x,y,z):
                    print x,y,z
                fn3(*demo) #将列表中的元素打散传入函数
    
        Python 匿名函数 lambda:
                f = lambda x,y,z: x + y + z
                f(1,2,4) #返回 7
                list1 = [ (lambda x: x*3 ),(lambda y: y*3)]
                for i in list1:
                    print i(3)
    
                filter过滤器函数:
                    filter(fn,list1) # fn为返回布尔类型函数,list1为列表
    
                多个队列函数 map(fn,list1,list2):
                    list1 = [1,2,3,4]
                    list2 = ['S','M','T','W']
                    map(None,list1,list2) # [(1,'S'),(2,'M') ....] 同zip();
    
                多个序列整合一个序列 reduce:
                    list1 = [1,2,3,4,5,6]
                    reduce(lambda x,y: x+y,list1) #求出两个序列只和,对序列折叠
    
                Python闭合特性:
                    def fn1(x):
                        def fn2(y):
                            return x+y
                        return fn2
                    fDemo = fn1(2)
                    fDemo(2) # 4
                    fDemo(3) # 6 x= 2 被保存好了
    
                Python的闭包,闭包叫 lexical closure:
    
                yield 返回一个生成器对象:
                    def fn1(x):
                        y = 0
                        while y <= x:
                            yield y
                            y += 1
                    g1 = fn1(10)
                    g1.next() # 返回1
    
                装饰器:
                    1.本身是一个函数,其目的是装饰其他函数,是其他函数功能增强
                    2.增强被装饰函数的功能
                    3.装饰器需要接受一个函数,然后对其函数进行包装
    
                    etc.
                        def deco(func):
                            def wrapper():
                                print "Please say somethings:"
                                func()
                                print "No zuo no die"
                            return wrapper()
                        @deco
                        def show():
                            return "I am from Mars."
    
                Python 递归:
                    def dix(x):#实现阶乘
                        if x <= 1 : return 1
                        else : reutrn x * dix(x-1)
    
    Python 面向对象:
    
            简单类实例:
                class MyClass():
                    data = 'value'
                def myMethod(self):
                    return self.data
            __varname__(): #Python会在某种特定情况下自动调用
    
            Python构造器: #__init__():
                class MyClass():
                    data = 'hello world'
                    def __init__(self,x):
                        self.str = x
                demo = Myclass('luowen')
                demo.str # => 'luowen'
    
            Python析构器: # __del__ 当调用del时候会调用class中的del方法
                class MyClass():
                    data = 'value'
                    def __init__(self,x):
                        self.voice = x
                    def __del__(self):
                        pass
                    def saySomeThing(self):
                        print self.voice
    
            Python类的一些属性:
                __doc__ # 类的文档信息
                __name__ # 类的名字
                __bases__ # 
                __dict__ # 类的属性
                __module__ # 类所在的模块
                __class__ # 类的名字
    
            Python类中可用变量:
                1.实例变量 #self.data
                2.局部变量 : 方法内部创建变量,属于每个实例特有的数据 # demo = MyClass demo.data
                3.类变量(也称静态变量,可以直接使用) # 类名.变量名 __name__
                4.全局变量:直接使用
    
            Python类中可用方法:
                1.issubclass(sub,sup): 判断一个类手否由另一个类派生
                2.isinstance(obj1,obj2) : 判断一个对象是否是一个给定的类型
                3.hasattr(obj,'attr') : 判断一个对象是否具有某个属性
                5.super(type[.obj]) 在之类中找出其父类,以便于调用其属性
                    一般情况下仅能采用非绑定凡是调用祖先类方法
                    而super()可用于传入实例或类型对象.
    
        Python 中的模块:
                顶层文件
                模块文件1
                模块文件2
                模块文件3
        
        Python 包 :
            /dir
                | __init__.py
                | mod1.py
                | mod2.py
                | mod3.py
            import dir.mod1 as demo #导入
            demo.xx #使用
    
    
        Python打包:
            distiuls from
    
            name                : 包的名称(必须)
            Version             : 版本号(必须)
            author              : 作者名称
            author_email        : 作者电子
            maintainer          : 维护者的名称
            maintainer_email    : 维护者电子邮件
            url                 : 包的主页
            description         : 包的简短描述
            long_description    : 包的详细描述
            download_url        : 包的下载未知
            Classfiers          : 字符串分类列表
    
    
        Python 打包命令 :
            setup.py sdist --formats = asflow
                zip : zip file
                gztar : tar.gz file
                bztar : tar.bz2 file
                ztar : tar.Z file
                tar : tar file
            setup bdist # 打包二进制文件
                gztar : tar.gz file
                ztar : tar.Z file
                tar : tar file
                zip : zip file
                RPM : RPM Package
                pkgtool : Solaris pkgtool
                wininst : Windows上自解压的zip格式包
                msi : Microsoft Installer #Windows可安装文件
    
                bdist_dump:
                bdist_rpm :
                bdist_wininst :
                bdist_msi :
    
                setup.py中setup()中可用参数:
                    platforms : 平台列表
                    license : 许可证
                    py_modules : 各模块名称组成的列表,此些模块可能位于包的根目录下,也可能位于某子包目录中
                    packages : 各子包名称的列表
    
    etc #打包是咧
    
    #!/usr/bin/env python 
    # file name setup.py
    from distutils.core import setup
    
    setup(
            name = 'pkg1'
            version = '0.1'
            author = 'Luowen'
            author_email = 'admin@admin.com'
            maintainer = 'luowen@luowen.com'
            py_modules = ['mod1','mod2','mod3']
            url = 'http://www.luowen.com'
            download_url = 'http://www.luowen.com/pythonmoudles/download'
            description = 'Luowen Test Moudles'
    )
    
    #打包目录结构
            demo
            |__init__.py
            |mod1.py
            |mod2.py
            |mod3.py
            |setup.py
            |README
    
        python setup.py sdist # 打包
        python setup.py install # 安装
    
    # pip easy_install 简单快速安装工具
    
        Python模块、包、打包
            安装:
                python setup.py install # build and install
    
            第三方模块的默认安装路径为 : site-packages
                /usr/local/python27/lib/python2.7/site-pakcages
    
            Python setup.py install 
                --user="USERNAME" # 把路径安装在其他的目录
                --prefix="PATH" # 安装目录
                --exec-prefix="PATH" # 对你制定公共目录有写的权限
    
            深度定制:
                --install-purelib=/path/to/path_lib
                --install-platlib=/path/to/plat_lib
                --install-lib=/path/to/lib
    
                --install-scripts=/path/to/bin # 可执行文件的安装路径
                --install-headers=
    
        Python异常:
            1.语法错误
            2.逻辑错误
        try:
            #coding
        except IOError,e:
            print e
        except (Exception1,Exception2)[e1,e2]:
            suite__
        else:
            else_suite
    
        try:
            try_suite #异常代码抛出问题
        finally:
            finally_suite #用于资源释放
    
    StandaardError: #标准异常超类
        ArithmeticError:#抽象子类
            AssertionError:
            AttributeError:
            FloatingPointError:
            IOError:
            ImportError:
            IndentationError:
            IndexError: #索引超出范围异常
        LookupError:#抽象子类
            KeyError:
            KeyboardInterrupt:
            MemoryError:
            NameError:
            NotImplementedError:
            OSError:
            OverflowError:
        EnvironmentError:#抽象子类
            SyntaxError
            SystemError
            TypeError
            UnboundLocalError
            UnicodeError
            ValueError
            WindowsError
            ZeroDivisionError
    
    断言:
        assert condtion , 'error reson'
  • 相关阅读:
    AI工程师职业规划和学习路线完整版
    Python基础面试题库
    Python运行的17个时新手常见错误小结
    一文总结学习 Python 的 14 张思维导图
    NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
    超过 150 个最佳机器学习,NLP 和 Python教程
    任泽平:95页PPT分析2018(经济、房价、政策)
    为什么量化交易中稳定盈利是第一要义
    使用tushare获取股票实时分笔数据延时有多大
    5行代码实现1秒内获取一次所有股票的实时分笔数据
  • 原文地址:https://www.cnblogs.com/luowen/p/3879584.html
Copyright © 2011-2022 走看看