• Python基础学习之常用模块


    1. 模块

    • 告诉解释器到哪里查找模块的位置:比如sys.path.append('C:/python')
    • 导入模块时:其所在目录中除源代码文件外,还新建了一个名为__pycache__ 的子目录,这个目录包含处理后的文件,若.py文件没变化,则不会重建,变化了则重建
    • 模块只导入一次,避免两个模块导入对方时的无穷递归
    • 若需要多次导入:import importlib,hello = importlib.reload(hello),用reload加载新版本
    • 在主程序中(包括解释器的交互式提示符),变量__name的值是'__main';导入的模块中,这个变量被设置为该模块的名称
    • import sys, pprint,pprint.pprint(sys.path)可以友好的打印,常把模块放在site-packages下
    • 比sys更常见的做法:修改PYTHONPATH比如export PYTHONPATH=$PYTHONPATH:~/python,添加到主目录中的.bashrc文件,可对所有启动的shell都执行这个命令

    2. 包

    • 1.组织模块,编成包,2.目录必须包含文件__init__.py,from . import 模块名 的方式注册这个模块

    3. 模块内容查询

    • 使用dir:列出对象的所有属性(对于模块,它列出所有的函数、类、变量等) [n for n in dir(copy) if not n.startswith('_')]
    • __all__:定义模块的公有接口,否则会在以import *方式导入时,导入所有不以下划线打头的全局名称!!!
    • help(copy.copy)
    • __doc__:文档开头对函数进行说明的字符串
    • __file__:有时需要使用源代码时,可以查看模块的完整路径

    4. 常用模块

    4.1 sys:与python解释器相关

    • sys.argv:包含传递给python解释器的参数,包括脚本名
    • sys.exit:退出当前程序
    • sys.modules:字典sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
    • sys.path
    • sys.plantform:运行解释器的平台名称
    • sys.stdin(和input差不多,input还可以加说明文字、sys.stdoutsys.stderr是类似文件的流对象
    #input
    n = int(input('Please input a number:
    '))
    sn = list(map(int,input('Please input some numbers:
    ').split()))#int(1),int(2)...再合成list
    print(n)#1
    print(sn,'
    ')#[1,2,3]
    
    #sys.stdin
    print('Please input a number:')
    n = int(sys.stdin.readline().strip('
    ')) #strip('
    ')表示以
    分隔,否则输出是“字符串+
    ”的形式
    print('Please input some numbers:')
    sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
    if sn == '':
        break
    sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
    print(n)
    print(sn,'
    ')
    复制代码

    4.2 os:能够访问多个操作系统服务

    • os.environ():环境变量,要访问环境变量PYTHONPATH,可使用表达式os.environ['PYTHONPATH']
    • os.system():用于运行外部程序
    • os.sep():是用于路径名中的分隔符
    • os.pathsep():来组合多条路径
    • os.linesep():是用于文本文件中的行分隔符
    • os.rename(旧,新)
    • os.remove()
    • os.listdir()
    • os.mkdir()
    • os.rmdir()
    • os.getcwd()
    • os.chdir()
    • os.path.isdir()

    4.3 fileinput:如何读写文件

    (没怎么用过,先写上,遇到了再详细看)

    • python some_script.py file1.txt file2.txt file3.txt:依次迭代文件file1.txt到file3.txt中的行
    • cat file.txt | python some_script.py


    常见函数:

    • fileinput.input:返回一个可在for循环中进行迭代的对象
    • fileinput.filename:返回当前文件(即当前处理的行所属文件)的文件名
    • fileinput.lineno:返回当前行的编号
    • fileinput.filelineno:返回当前行在当前文件中的行号
    • fileinput.isfirstline:当前行为当前文件中的第一行时返回True
    • fileinput.isstdin:在当前文件为sys.stdin时返回True
    • fileinput.nextfile:关闭当前文件并跳到下一个文件
    • fileinput.close:关闭整个文件链并结束迭代。
    • 举例:在行号后面添加行号

    4.4 heapq:堆中常用模块

    • 创建堆:(1)用heappush创建(2)heapify得到合法堆
    from heapq import *
    from random import shuffle
    data = list(range(10))
    shuffle(data)
    #创建堆:(1)用heappush创建
    heap = []
    for n in data:
        heappush(heap, n)#添加
    heappop(heap)#弹出堆顶元素
    #(2)heapify得到合法堆
    heapreplace(heap, 0.5)#弹出最小元素,且压入新元素,相当于前两个的整合,但效率更高
    #nlargest(n, iter),nsmallest(n, iter),找出可迭代对象iter中最大和最小的n个元素
    
    复制代码

    4.5 双端队列

    from collections import deque
    q = deque(range(5))
    q.append(5)
    q.appendleft(6)
    q.pop()
    q.popleft()
    q.rotate(3)
    q.rotate(-1)
    #此外还有extend,extendleft
    复制代码

    4.6 time

    • time.asctime():将时间元组转换为字符串
    • time.time():返回当前的国际标准时间,以从新纪元开始的秒数表示

    4.7 random

    • random.random:返回一个0~1(含)的伪随机数
    • random.getrandbits:以一个整数的方式返回指定数量的二进制位。
    • random.uniform:回一个a~b(含)的随机(均匀分布 的)实数。例如,如果你需要一个随机角度,可使用uniform(0, 360)
    • random.randrange:是生成随机整数的标准函数
    • random.choice:从给定序列中随机(均匀)地选择一个元素
    • random.sample:从给定序列中随机(均匀)地选择指定数量的元素,并确保所选择元素 的值各不相同

    4.8 shelve和json

    4.9 re

    4.9.1 正则表达式

    • 通配符:句点与除换行符外的其他字符都匹配
    • 对特殊字符进行转义:'python.org‘。两层转义:解释器执行的转义和模块re执行的转义
    • 字符集:例如'[a-zA-Z0-9]'与大写字母、小写字母和 数字都匹配。请注意,字符集只能匹配一个字符
    • 指定排除字符集:'abc'与除a、b和c外的其他任何字符 都匹配。
    • 二选一和子模式:'python|perl','p(ython|erl)'
    • 问号表示可选的子模式可出现一次,也可不出现
    • (pattern)*:pattern可重复0、1或多次。
    • (pattern)+:pattern可重复1或多次。
    • (pattern){m,n}:模式可从父m~n次

    4.9.2 一些函数

    • compile(pattern[, flags]):根据包含正则表达式的字符串创建模式对象
    • search(pattern, string[, flags]):在字符串中查找模式
    • match(pattern, string[, flags]):在字符串开头匹配模式
    • split(pattern, string[, maxsplit=0]):根据模式来分割字符串
    • findall(pattern, string):返回一个列表,其中包含字符串中所有与模式匹配的子串
    • sub(pat, repl, string[, count=0]):将字符串中与模式pat匹配的子串都替换为repl
    • escape(string):对字符串中所有的正则表达式特殊字符都进行转义

    5.操作文件的函数/方法

    open函数负责打开文件(f = open("文件名","打开方式")),返回文件操作对象f,打开方式有:只读r,只写w,追加a等
    read/write/close需要文件对象f来调用

  • 相关阅读:
    怎样写C代码——《狂人C》习题解答1——余响
    怎样写C代码——《狂人C》习题解答1(第一章习题7)
    充分理解表达式——《狂人C》习题解答2(第二章习题5)
    指针——《狂人C》观点
    欧拉项目练习题吧: 题目002
    JS调用XML绑定select[原创]
    SWFUpload在FF下的Bug[原创]
    winform实现嵌套类访问父类的控件[原创]
    在c#中如何动态改变iframe的src值,动态指向一个网页
    GridView里面模板获取唯一值(如ID)
  • 原文地址:https://www.cnblogs.com/lyck/p/13633936.html
Copyright © 2020-2023  润新知