• Python学习——Day10


    一、sys模块

    概述:Python 的 sys 模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。通俗来讲,sys 模块为程序与 Python 解释器的交互,提供了一系列的函数和变量,用于操控 Python 运行时的环境

    sys.argv    实现从程序外部向程序传递参数

          sys.argv 变量是一个包含了命令行参数的字符串列表,利用命令行向程序传递参数。其中,脚本的名称总是 sys.argv 列表的第一个参数。

    1. import sys
    2. print(sys.argv[0]) #sys.argv[0]表示代码本身的文件路径
    3. print("命令行参数如下:")
    4. for i in sys.argv:
    5. print(i)
    6. 命令行输入参数如下:
    7. D:\st13\python\1.20\python lx.py Welcome to Xian
    8. 运行结果:
    9. lx.py #sys.argv[0]
    10. 命令行参数如下:
    11. lx.py
    12. Welcome
    13. to
    14. Xian

    sys.path

    获取指定模块搜索路径的目录名列表,列表中的第一项为当前的工作目录

    1. import sys
    2. print(sys.path)
    3. 运行结果:
    4. ['D:\\st13\\python\\1.20', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs',
    5. 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages']

     sys.exit([arg])   

           一般情况下执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用 sys.exit() 函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对 sys.exit() 的调用。(0是正常退出,其他为异常)当然也可以用字符串参数,表示错误不成功的报错信息。

    下面的例子,首先打印 'Hello',执行完 sys.exit(1),执行 except 语句,将 '中途退出' 作为参数传递给函数 exitfunc(),然后将 '中途退出' 打印出来,程序正常退出,不执行后面的 print("Welcome") 语句

    1. import sys
    2. def exitfunc(value):
    3. print(value)
    4. sys.exit(0)
    5. print("Hello")
    6. try:
    7. sys.exit(1)
    8. except SystemExit as value:
    9. exitfunc('中途退出')
    10. print("Welcome")
    11. 运行结果:
    12. Hello
    13. 中途退出

    sys.copyright  包含 Python 解释器有关的版权信息的字符串

    1. >>> sys.copyright
    2. 'Copyright (c) 2001-2019 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'

    sys.getrefcount()
    • 返回的引用次数。
    • 引用次数会比期望值值多一个,因为它包含getrefcount()参数的临时引用。
      1. >>> class Test():
      2. >>> pass
      3. >>> t = Test()
      4. >>> sys.getrefcount(t) # t 本身是Test,所以被引用了一次。
      5. 2

      sys.getrecursionlimit()

      • 返回当前递归的限制也就是Python解释器堆栈最大深度的值。
      • 该限制可防止无限递归导致C堆栈溢出和Python崩溃。它可以通过setrecursionlimit()设置。
      1. >>> sys.getrecursionlimit()
      2. 1000

      sys.setrecursionlimit()

      • 设置Python解释器的堆栈最大深度为

      • 该限制可防止无限递归导致C堆栈溢出和Python崩溃。

      • 最高可能的限制取决于平台

      1. >>> sys.setrecursionlimit(999)
      2. >>> sys.getrecursionlimit()
      3. 999

      sys.getsizeof(, )