python04-0.1_Python04 模块初识

Python04 模块初识

模块初识

模块有标准库和第三方库

标准库:python自带的一些常用模块,直接导入就可以使用。

第三方库:需要单独下载安装。

模块其实就是一个.py的文件,这个文件就称之为模块,模块中会有很多不同的方法

1.sys模块

注意在起名字的时候,不要与库中模块的名字重复,否则当你导入模块的时候可能会导入的.py文件是错误的。

模块一定要在这些目录下面,否则导入的时候就会找不到,会无法加载

Lib是python的标准库目录

第三方库安装的模块一般都会存在site-packages目录中,site-packages在Lib目录中

如果找不到导入的模块在什么位置,可以在pycharm中通过ctrl + 鼠标左键,点击图中import后面这个sys,就会打开该模块文件,然后右键该文件就会有copy path选项,复制路径后在电脑中打开即可。

sys模块因为是由Java来开发的,所以搜索的话,是搜不到的。

print (sys.argv) ##打印相对路径

在pycharm中打印

在cmd中打印

可以看到cmd中打印的是相对路径,pycharm打印出绝对路径是因为pycharm本身会将绝对路径打印出来,所以实际sys.argv还是相对路径。

通过python运行py文件时,后面可以跟参数,图中的1、2、3都是参数,打印的时候会把参数也打印出来。

有时做测试、运维运行脚本就需要传一些参数,根据输入的参数来决定做什么操作。

print (sys.argv[2])

列表索引位置从0开始,所以通过2,将对应位置的2这个参数给打印出来了

2.os模块

与系统交互的操作,比如调用系统文件、程序、命令等,只要是与系统有交互的操作都是用os模块。

import os

os.system('dir')

os.system可以使用Windows命令,这里使用的是dir,用来查看当前目录下的文件;

通过python执行后,可以看到成功的执行了,至于图中看到的乱码,这是因为python使用utf-8,与Windows 使用的默认编码不同导致的,这个没有关系。

a = os.system('dir) #只执行命令,不保存结果

将os.system('dir)赋值给a,然后在打印a,正常思路我们可能认为会将dir的结果赋值给a,然后在把这个结果打印出来,图中可以看到只是将os.system('dir)这个动作给执行了,直接输出到屏幕上,而不是打印a这个变量。

打印出来的是0这个数字,在系统中0表示执行命令成功,非0表示执行不成功。

使用os.popen可以保存结果

打印的时候,并不是保存的结果,而是内存地址

要打印保存的结果,需要在后面加上.read(),因为os.popen将内容存到内存的一个地方,需要通过.read()来读取一下。

os.mkdir('new_dir')

创建一个新的文件夹目录,名为new_dir

在电脑上已经创建了这个文件夹。

模块变量路径

当前sys_test中的代码

打开另一个py文件,把sys_test当做第三方模块导入,然后运行test.py

执行结果

我们将sys_test.py放到另一个目录中,在试着去执行test.py

因为sys_test.py的移动,在test中之前导入的模块就会被删除

重新导入模块,可以看到在sys_test下面有红色波浪线,表示找不到该模块

执行test.py也报错

这说明了python会先从当前的目录下去找模块,然后去从site-packages变量目录中去找,而且不会到子目录中去找,所以当把sys_test移动到子目录中后,就会报错

pvc

将sys_test.py文件copy到site-packages中,执行之后在site-packages中有一个pycache的目录,在该目录中会有一个sys_test.cpython-36.pyc的文件。

在python2.X中不会有pycache目录,只有运行模块时才会产生pyc文件;

python是解释型语言,像C语言一类的是编译性语言;

编译型语言就是将代码执行前,通过编译器将所有代码编译成系统能理解成的语言,就是编译成0和1,运行的时候就直接和CPU交互,运行起来就会较块。

解释型语言就没有编译的过程,而是在程序运行时通过解释器,对程序代码逐行的进行解释,解释成系统理解的语言(0和1);

编译型语言因为在执行的时候少了翻译这一步,所以运行会较快,当然这是相对的。

Java语言在执行代码前,会对代码有一个编译优化的过程,相当于你自己编写的代码和系统之前的中间的一个代码,这个中间代码是为了更好的能去被执行;python也有这么个过程,这个过程就生成了pyc文件,pyc文件可以看到优化的结果。

当python程序运行时,编译的结果则是保存在位于内存中的PycodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中找pyc文件,如果找到,则直接载入,否则重复上面的过程。

当py原文件修改更新后,再次运行程序时,会检查py文件和pyc文件的时间,如果更新时间一致,那么这会直接运行预编译过的pyc文件来执行代码,否则py文件更新时间最新的话,则会运行py文件并更新最新的pyc文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值