python04 模块初识

  • 模块初识

模块有标准库和第三方库

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

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

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

  • sys模块


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


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

Lib是python的标准库目录

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

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


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

在pycharm中打印


在cmd中打印

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


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

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

print (sys.argv[2])


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

  • os模块

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

1.

import os
os.system(‘dir‘)

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

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

2.

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


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

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


使用os.popen可以保存结果


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


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

3.

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移动到子目录中后,就会报错。

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

时间: 2024-12-19 10:09:28

python04 模块初识的相关文章

python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径,在pycharm输出结果是绝对路径,因为在pycharm中调用 print(sys.argv[2]) #可以从数据列表中取值,[2]指取第三位.        标准库存放位置:C:\Python35\Lib 第三方库存放位置C:\Python35\Lib\site-p

Python模块初识

放暑假了,明天就回家,今天晚上写一篇,后面几天没机会写了..... 模块初识: 模块:就是将一堆功能封装在一起,直接引入使用 模块又称之为库,分为两大类: 标准库:不需要安装可以直接引用的库 第三方库:必须安装才能使用的库 看下都有哪些库.在Python的安装目录下的lib目录: 这里的就是标准库. 在Lib目录下的site-packages目录就是第三方库,我就不截图了... 我们接下来看两个模块:sys和os sys: 我们来看一下sys下的path功能 1 # Author:学无止境 2

python修行之路(三 模块初识及数据运算类型)

在python修行路上,果不其然的遇到了第一个困处,开始看不懂代码,开始出现理解苦难的现象,这是小白修行路上的正常现象.其实自己是很慌的,感觉很无助,能做的就是把自己学的慢慢记录下来,理一个自己的逻辑,尽量写清楚,写的通俗易懂,为与我类似的修行者做参考. 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,使用时安装调用就好,现在先象征性的学习2个简单的. sys模块--sys pass功能#!/usr/bin/env python# -*- coding: utf-8

python学习笔记(模块初识、pyc和PyCodeObject是什么)

一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径,在pycharm输出结果是绝对路径,因为在pycharm中调用 print(sys.argv[2]) #可以从数据列表中取值,[2]指取第三位.        标准库存放位置:C:\Python35\Lib 第三方库存放位置C:\Python35\Lib\site-p

Python自动化3.0-------学习之路-------模块初识!

模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. sys #!/usr/bin/env python# -*- coding: utf-8 -*- import sys print(sys.argv) #输出$ python test.py helo world['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取

pymysql模块初识

pymysql模块初识 SQL的注入问题 pymysql的增删改 pymysql的查询 1.pymysql模块初识 import pymysql conn = pymysql.connect(host='localhost',user='root',password='ren666666',database='test1',charset='utf8') cursor = conn.cursor() print('----1----') sql = "SELECT * FROM chart1&q

黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载

黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数据会直接丢失,俗称丢包) #面试 #首先只有在TCP协议中才有黏包现象,是因为TCP协议是面向流的协议, #在发送的数据传输的过程中还有缓存机制来避免数据丢失 #因此在连续发送小数据的时候,以及接收大小不符的时候,都容易产生黏包现象 #本质是不知道客户端发送的数据长度 面试中解释黏包 #连续send

python常用模块初识

模块,模块就是封装了特殊功能的代码. 模块分三种: 1:自定义模块 2:第三方模块 3:内置模块 一.自定义模块 test.py #!/usr/bin/env python # -*- coding:utf-8 -*- print("I am test") print("I am test1") print("hello world") sys.py(该文件就调用了test模块) #!/usr/bin/env python # -*- codin

python基础6 模块初识

本节主要内容: 引用其他模块 模块重名 2个简单标准库举例 练习自己写模块 参考网页 Python的强大之处在于他有常丰富和强大的标准库和第三库. 引用其他模块 要使用一个模块,我们必须首先导入该模块.Python使用import语句导入一个模块.例如,导入系统自带的模块 math: import math 只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句: from math import pow, sin, log 调用math模块的函数: print math.p