0
点赞
收藏
分享

微信扫一扫

python模块内置变量及其作用


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__))))

#运行:
python3 filelocation.pyfilelocation.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()函数更新列表中元素的值。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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']

3.​​__name__​

这是python内置的系统变量。

当python程序被执行时,入口文件即python解释器紧跟的那个py文件,在这个文件中​​__name__​​​的值为​​__main__​​​,在其它py文件中的​​__name__​​​的值都等于所在文件的文件名(不包含.py后缀)。通常,我们使用​​if __name__ == "__main__"​​来判断当前文件是否是入口文件,以便判断是否要执行这个if语句中的代码块。

有趣的例子:

cat /root/test.py
def test():
print("this is test code!")
if __name__ == "test":
test()
cat /root/main.py 
import test
print("test.__name__ : %s"%(test.__name__))
if __name__ == "__main__":
print("this is main code!")
[root@controller ~]# python /root/main.py 
this is test code!
test.__name__ : test
this is main code!



举报

相关推荐

0 条评论