python模块内置变量及其作用

本文深入探讨了Python中__file__变量的作用及其如何获取当前文件的路径信息,同时讲解了sys.path列表变量的工作原理,它是Python解释器用于查找模块导入路径的关键。文章通过实例代码展示了如何使用os模块获取文件位置及目录层级,以及sys.path的构成和其在模块导入过程中的角色。

1.__file__

所在模块:os

变量作用:指向当前文件

当前文件的完整路径:os.path.abspath(__file__)

当前文件所属目录:os.path.dirname(os.path.abspath(__file__))

当前文件所属目录的上级目录:os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

 

cat filelocation.py
import os
print(__file__)
print(os.path.abspath("filelocation.py"))
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.abspath(__file__)))
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
运行:
filelocation.py
/home/test/CodeProjects/PythonProjects/test/filelocation.py
/home/test/CodeProjects/PythonProjects/test/filelocation.py
/home/test/CodeProjects/PythonProjects/test
/home/test/CodeProjects/PythonProjects

 2.sys.path

 所在模块:sys

python程序中使用import导入模块时,python解析器会在当前目录、已安装和第三方模块中搜索要导入的模块,更准确的说是从sys.path这个列表变量包含的路径中搜索的,因为sys.path是一个列表变量,所以可以使用append()和insert()函数更新列表中元素的值。

cat syspath.py
import sys
print(isinstance(sys.path,list))
print(sys.path)
运行:
python3 syspath.py
True
['/home/test/CodeProjects/PythonProjects/test', '/usr/local/python36/lib/python36.zip', '/usr/local/python36/lib/python3.6', 
'/usr/local/python36/lib/python3.6/lib-dynload', '/home/test/.local/lib/python3.6/site-packages', '/usr/local/python36/lib/python3.6/site-packages']

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/DesignerA/p/11618601.html

Python 内置变量Python 解释器自动定义的一些特殊变量和对象,包含了 Python 语言的核心功能、类型、异常等,用户不需要显式定义它们。以下是常见内置变量的详细介绍: ### 模块信息类 - `__name__`:表示模块的名称。当直接运行一个 Python 文件时,`__name__` 等于 `__main__`;当文件被其他文件引用时,`__name__` 的值为该文件不带 `.py` 后缀的名字[^1][^4]。 - `__file__`:获取当前文件的路径[^4]。 ```python print(__file__) ``` - `__doc__`:获取文件的注释,也可用于获取函数、类等的文档字符串[^4]。 ```python def example_function(): """这是一个示例函数的文档字符串""" pass print(example_function.__doc__) ``` - `__package__`:获取导入文件的路径,多层目录以点分割,对当前文件返回 `None`[^4]。 ### 解释器环境类 - `__debug__`:是一个布尔值,通常用于控制调试代码的执行。在正常运行时,其值为 `True`;使用 `-O` 或 `-OO` 选项启动 Python 解释器时,其值为 `False`。 ```python if __debug__: print("这是调试信息") ``` - `__builtins__`:指向内置函数和类型的命名空间,如 `len`、`str`、`dict` 等[^2]。 ```python print(__builtins__.len([1, 2, 3])) ``` - `__import__`:用于动态导入模块Python 内部使用),可以通过字符串名称导入模块[^2]。 ```python math_module = __import__('math') print(math_module.sqrt(4)) ``` ### 交互模式值类 - `_`:在交互式解释器中,`_` 通常保存上一次表达式的计算结果。 - `__`:保存上上次表达式的计算结果。 - `___`:保存上上上次表达式的计算结果。 ### sys 变量扩展类 - `sys.argv`:是一个列表,包含了命令行参数,`sys.argv[0]` 是脚本的名称。 ```python import sys print(sys.argv) ``` - `sys.path`:是一个列表,包含了 Python 解释器查找模块的路径。 ```python import sys print(sys.path) ``` - `sys.modules`:是一个字典,包含了已经导入的模块。 ### 对象/类属性类 - `__class__`:返回对象所属的类[^2]。 ```python num = 42 print(num.__class__) ``` - `__dict__`:存储对象或类的属性字典,类的 `__dict__` 包含类的属性和方法,实例的 `__dict__` 包含实例的属性[^2]。 ```python class MyClass: x = 1 obj = MyClass() print(MyClass.__dict__) print(obj.__dict__) ``` - `__module__`:表示定义对象或类的模块名称。 - `__mro__`:返回类的方法解析顺序元组,用于确定方法调用时的查找顺序。 ### 其他 - `__slots__`:限制类的实例属性,优化内存使用。类中定义了 `__slots__` 后,实例只能有 `__slots__` 中指定的属性[^2]。 ```python class Point: __slots__ = ('x', 'y') p = Point() p.x = 1 # p.z = 2 # 报错:AttributeError ``` - `__traceback__`:存储异常的调用堆栈信息,在捕获异常时可以通过该属性获取堆栈跟踪对象[^2]。 ```python try: 1 / 0 except Exception as e: print(e.__traceback__) ``` - `__cached__`:获取导入文件的缓存路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值