Python语言学习:模块
一、模块
1. 模块(Module):以.py结尾的文件,包含python对象定义和python语句。使代码段更容易理解和使用。
模块分为两种:标准库(直接导入的库)和第三方库(需要下载安装的库)。
2. 模块的引入
a. import语句:当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。
如果想要导入模块support.py,需要把命令放在脚本的顶端。
import module
例如:import sys
b.from...import语句:从模块中导入一个指定的部分到当前命名空间中。
from modname import name
c.from...import * 语句:把一个模块的所有内容全部导入到当前的命名空间也是可行的
from modname import *
3.索引路径:当导入一个模块,python解析器对模块位置的搜索顺序如下:
a.当前目录
b.如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录
c.如果还找不到,python会察看默认路径,Unix下,默认路径是/usr/local/lib/python/
模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
4. PYTHONPATH变量:作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH一样。
a. 在windows系统,典型的PYTHONPATH如下:
set PYTHONPATH= c:\python27\bin;
具体看安装的默认路径
b.在Unix系统,典型的PYTHONPATH如下:
set PYTHONPATH = /usr/local/lib/python
具体看安装的默认路径
5.命名空间和作用域
a. 变量是拥有匹配对象的名字(标识符)。
命名空间是一个包含了变量名称(键)和它们各自相对应的对象(值)的字典。
一个python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和全局变量重名,则局部变量会覆盖全局变量。
每个函数都有自己的命名空间。类的方法的作用域规则和通常函数一样。
python会智能的猜测一个变量是局部还是全局。它假设任何函数内赋值的变量都是局部的。因此,如果给函数内的全局变量赋值,需要使用到global语句。这个语句会告诉python这个变量是全局变量。
如果不给函数的变量前加global,那么久会报UnboundLocalError的错误,如下:
# Author:Crystal
#!/usr/bin/env python
Money = 2000
def AddMoney():
# 需要加入global Money这个声明,python才知道以下这个Money和上面定义的局部变量Money不同,这个是全局变量Money
Money = Money +1 #UnboundLocalError: local variable 'Money' referenced before assignment
print (Money)
AddMoney()
print (Money)
6. dir()函数:一个排好序的字符串列表,内容是一个模块里定义过的名字
#! /usr/bin/evn python import math #导入内置math模块
content = dir(math)
print (content)
备注:特殊字符串变量_name_指向模块的名字,_file_指向该模块的导入文件名
7.globals()和locals()函数:可被用来返回全局和局部命名空间里的名字。
如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名
如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字
两个函数的返回类型都是字典。所以名字们能用key()函数摘取
8. reload()函数:重新导入之前顶层的代码进行执行的操作。
reload(module_name)
9. python中的包:是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的python的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在_init_.py文件,该文件的内容可以为空。_init_.py用于标识当前文件夹是
一 个包。包由类组成,类是一个文件中放置很多函数组成。
10. 模块例子:
# Author:Crystal
#! /usr/bin/env python '''import sys
#print(sys.path) #path是打印环境变量
print(sys.argv) #argv打印绝对路径 import os
#cmd_res= os.system("dir") #os.system只是执行命令,不保存结果
cmd_res= os.popen("dir").read() #os.popen可以执行命令并保存结果,read()是将结果读取出来
print(cmd_res)
os.mkdir("new_dir") #os.mkdir增加新的文件夹''' import login #调用同一个目录下的文件,如果调用的文件和此文件不在同一个目录,就把被调用的文件放置在第三方库的目录下进行调用
部分内容摘录自菜鸟课程:https://www.runoob.com/python/
Python语言学习:模块的更多相关文章
- python语言学习
前段时间要做视频直播需要编写自动模块,就考虑使用python脚本语言,python的好多语法都是很独特的,比如数据类型不需要预定义,缩进的方式等,另外功能也很强大,豆瓣就是用python写的.我写的部 ...
- Python语言学习之Python入门到进阶
人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...
- Python语言学习之C++调用python
C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进 ...
- #python基础学习模块:marshal 对象的序列化
#标准库地址:https://docs.python.org/2/library/marshal.html"""有时候,要把内存中一个对象持久化保存磁盘或者序列化二进制流 ...
- python语言学习1——初识python
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python ...
- python语言学习笔记整理
什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...
- [学习总结] python语言学习总结 (三)
函数闭包 定义 延伸了作用域的函数(能访问定义体之外定义的非全局变量 作用 共享变量的时候避免使用了不安全的全局变量 允许将函数与某些数据关联起来,类似于简化版面向对象编程 相同代码每次生成的闭包,其 ...
- python语言学习8——字符串和编码
Unicode编码 计算机只能处理数字,如果要处理文本,就必须把文本转化为数字才能处理 有许多编码标准,但是不同的编码标准有时候会混乱,所以Unicode应运而生 Unicode把所有语言统一到一套编 ...
- python语言学习7——数据类型和变量
整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...
随机推荐
- rdlc报表带参数打印
1.新建rdlc文件报表 2.选中rdlc文件=>视图=>报表资料 添加几个参数,如图 设计报表页面 int WaitNum = this.queueDTOs.Where(m=>m. ...
- 使用DOM4J生成XML文档
package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...
- 《机实战》第2章 K近邻算法实战(KNN)
1.准备:使用Python导入数据 1.创建kNN.py文件,并在其中增加下面的代码: from numpy import * #导入科学计算包 import operator #运算符模块,k近邻算 ...
- SASS - 输出格式
SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...
- Android自定义View——彩色圆环统计图
1.初始化变量 圆的粗细:圆环的大小. 标注:文字前面的圆点. 分配比例大小:由于需要计算圆环扫过的角度,计算方法使用:(比例/100)*360度,用百分比算出360度占用了多少,由于比例/100 ...
- JS/JQUERY函数库
1. 判断字符串是否为空 function isEmptyString(str) { return str == undefined || str == "" || str == ...
- XML--XSL
参考 http://blog.51cto.com/cnn237111/1345998 https://www.w3.org/TR/2017/REC-xslt-30-20170608/ 声明 把文档声明 ...
- nginx log 切割
/logs/nginx/*/*access.log { daily rotate 30 missingok dateext #compress notifempty sharedscripts pos ...
- nginx worker进程循环
worker进程启动后,其首先会初始化自身运行所需要的环境,然后会进入一个循环,在该循环中不断检查是否有需要执行的事件,然后处理事件.在这个过程中,worker进程也是需要与master进程交互的,更 ...
- Microsoft SQL Server Management Studio连接后报“ viewInfo (Microsoft.SqlServer.Management.SqlStudio.Expl”
解决办法: 在路径:C:\Users\你的用户名\AppData\Local\Temp\”新建文件夹并命名为2,如果已经有 2 则看清楚是否是文件而不是文件夹,删掉文件改为文件夹: 如果是找不到\Us ...