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前缀 浮点数 简单的小数就直接用小 ...
随机推荐
- Pandas_one-hot encoding与dummy encoding
Pandas_特征编码 one-hot encoding 基本思想是将离散型特征的每一种取值都看成一种状态,保证每一个取值只会使得一种状态处于激活状态. 编码函数pd.get_dummies() du ...
- Floyd--P1119 灾后重建
题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...
- 吴裕雄--天生自然 PHP开发学习:数据类型
<?php $x = "Hello world!"; echo $x; echo "<br>"; $x = 'Hello world!'; e ...
- JDK源码阅读-------自学笔记(五)(浅析数组)
一.数组基础 1.定义和特点 数组也可以看做是对象,数组变量属于引用类型,数组中每个元素相当于该队形的成员变量,数组对象存储在堆中. 2.初始化数组 常用类初始化 // 整型初始化 int[] int ...
- Mybatis实现条件查询(三)
1. 准备 请先完成Mybatis基本配置(一)的基本内容 2. 疑问 我们再Mybatis基本配置(一)中实现了按照商品ID进行查询商品信息,可是在实际应用中却很少出现根据ID来查询商品的情况.因为 ...
- 【Linux】Linux中的网络命令
dig命令:是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法: dig(选项)(参数) [root@localhost tmp]# dig http://oa.kingnet.com ; ...
- ..\OBJ\CAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
..\OBJ\CAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __ma ...
- quartz 集成到Spring中
记录一下,防止忘记. 需要的jar包,quartz-2.2.3.jar,commons-collection-3.1.jar,spring-context-support-4.3.4.RELEASE. ...
- 纯CSS导航栏下划线跟随效果
参考文章 <ul> <li>111</li> <li>2222</li> <li>3333333</li> < ...
- ZOJ-1234 UVA-10271 DP
最近觉得动态规划真的很练脑子,对建模以及思维方法有很大帮助,线段树被卡到有点起不来的感觉 最近仔细思考了一下动态规划的思想,无非是由局部最优解得到全局最优解,由此类推,发现,像最短路和最小生成树其实都 ...