python学习-day2_初识模块

模块初识:

  1. 标准库:不需要安装直接可以导入的库
  2. 第三方库:需要下载安装

初识标准库

  1. sys模块
    • python文件命名的时候,不要与库中模块名字重复,否则导入模块时可能会导入错误的.py文件 

    • 模块一定要在如下的目录下面,不然就会导入的时候找不到,无法加载

    • Lib是python的标准库目录,第三方的安装模块一般都会存在于site-packages中

    • 如果找不到导入模块的位置,可以通过pycharm中ctrl+ 鼠标左键,如下图点击import后的模块名称,打开模块文件,然后右键该文件点击copy path,复制在电脑中打开即可
    • 上面的输出结果是一个数组,这数组就是模块调用的路径

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

      打印输出应该是相对路径,但是我们看到的是绝对路径,因为是在pytharm中打印,pycharm本身会将绝对路径打印出来。如果在cmd中执行此python代码,你看到的结果就是相对路径

    •  通过python运行py文件时,后面可以跟参数,如下

    • 图中1.2.3都是参数,打印的时候也会把参数打出来,有时候做运维测试的时候,需要传参,可以根据输入的参数来绝对做什么操作

    • 程序计数从0开始,打印参数,将对应的参数打印出来

  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


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

      • 模块变量路径

      当前os_test中的代码


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

      执行结果


      我们将os_test.py放到另一个目录中,在试着去执行test.py
      因为os_test.py的移动,在test中之前导入的模块就会被删除
      重新导入模块,可以看到在os_test下面有红色波浪线,表示找不到该模块

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


       

            3.

                   pyc

                  将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文件。

                                        

 参考链接:http://www.cnblogs.com/manonglaobing/articles/7420641.html

猜你喜欢

转载自www.cnblogs.com/William-hp/p/9267499.html