PYTHON学习计划.docx
《PYTHON学习计划.docx》由会员分享,可在线阅读,更多相关《PYTHON学习计划.docx(19页珍藏版)》请在冰豆网上搜索。
PYTHON学习计划
python之模块学习
模块简介
python是由一系列的模块组成的,
每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。
模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块(内置函数)不需要导入外。
导入直接使用如下语法:
import模块名称(不要.py后缀)
这样导入成功后,就可以在另外一个模块中使用被导入模块的功能函数或对象。
[python]viewplaincopyprint?
1.#-*-coding:
utf-8-*-
2.
module_1.py
3.name=ithomer
[python]viewplaincopyprint?
1.
2.python3.3.3(v3.3.3:
c3896275c0f6,nov182013,21:
19:
30)[mscv.160064bit(amd64)]onwin32
3.typehelp,copyright,creditsorlicenseformoreinformation.
4.>>>
此时如果我们直接输入print(url),系统则会报错,url变量未定义:
[python]viewplaincopyprint?
1.>>>print(url)
2.traceback(mostrecentcalllast):
3.file<stdin>,line1,in<module>
4.nameerror:
nameurlisnotdefined
5.>>>
所以我们需要先导入module_1的内容才算定义了url
变量,不过要注意的是导入的模块的变量并不是定义在顶层命名空间,而是在模块的命名空间中,因此使用如下方式导入后的打印变量如下:
[python]viewplaincopyprint?
1.>>>importmodule_1
2.>>>print(module_1.url)
3.
如果直接使用print(url),仍然还是会报url未定义的错误,原因就是上面说到的命名空间的问题。
如果想要直接在顶层命名空间中使用该变量,可以使用如下导入方式:
[python]viewplaincopyprint?
1.>>>frommodule_1importurl
2.>>>print(url)3.
这样就可以将module_1模块中的url变量导入到顶层命名空间了,直接使用变量也就不会报错了。
当然我们也可以为导入的变量重命名,如下把url重命名为myurl:
[python]viewplaincopyprint?
1.>>>frommodule_1importurlasmyurl
2.>>>print(myurl)
因为是使用了from…import语句,因此是将变量绑定在顶层命名空间,我们也就可以直接使用变量名了。
对于每个模块的导入,python解释器只会导入一次,即使重复使用import和from…import语句,也只有在pvm检测到该模块没有被导入时才执行导入动作。
即使后来你修改了模块的源代码,但没有重启pvm,python解释器仍然是使用之前导入的内容在处理。
如果需要重新载入修改后的源码,一是退出python的交互模式后再进入,二是直接使用reload语句,如下:
[python]viewplaincopyprint?
1.>>>fromimpimportreload
2.>>>reload(module_1)
3.<modulemodule_1from.\\module_1.py>
我们可以看到系统提示重新加载了module_1模块的源文件,我们修改内容后使用该方法重新导入后再执行就可以看到修改后的内容。
模块导入和执行模块作为
python语言中的基本单元,可以用来编写公用库函数或对象以便重复使用。
同时模块还可以作为独立文件进行运行,之前也已经提到,只要是导入了模块文件,那么pvm就会依次执行模块文件中的所有语句。
本篇主要介绍模块使用的一些进阶,首先定义一个模块module_2.py,内容如下:
[python]viewplaincopyprint?
1.#-*-encoding:
utf-8-*-
2.module_2.py模块的内容
3.
4.print(__name__)
5.
6.defsum(a,b):
7.returna+b
8.
9.if__name__==__main__:
10.importsys
11.print(sys.argv[0])
12.a=int(sys.argv[1])
13.b=int(sys.argv[2])
14.print(sum(a,b))
上面的这段代码基本上就包含了本篇文章要说的内容了:
__name__变量说明
__name__是一个全局变量,在模块内部是用来标识模块的名称的。
上面的例子中有一个打印__name__变量的语句,比如我们在python的交互模式下执行导入可以看到如下结果:
1.
2.>>>importmodule_2module_2
可以看到,通过使用import的方式导入模块后,打印的__name__值就是我们刚才说的模块的名称。
另外如果是通过python解释器直接执行模块,则__name__会被设置为__main__这个字符串值,如下:
[python]viewplaincopyprint?
2.__main__
3.module_2.py
4.5我们通过windows命令行直接执行module_2
这个模块文件,可以看到的结果输入如上,打印的__name__值为__main__。
通过这个特性我们可以将一个模块文件既当做普通的lib库供其他模块使用,又可以当做一个顶层执行文件进行执行,只是使用方式不一样而已。
1、当成lib库使用时,只需要在其他模块中使用import导入该模块即可(module_2)
2、当成执行模块时,通过python解释器直接运行该模块,然后在模块文件中最后写上上面例子中的if判断语句段即可(__main__)
通过__name__变量来区分是执行模块还是导入模块其实就非常类似java中的main函数了,不同的是java中是约定的方法名称,而python中约定是变量名称,异曲同工之效。
参数传递
参数传递主要是指作为执行模块时需要传递的参数,通过python解释器执行某一个执行模块传递参数的使用如下:
对于上面给定的例子执行就是:
[python]viewplaincopyprint?
2.__main__
3.module_2.py
4.5
python解释器会将所有传递的参数存储在sys.argv这个列表中,所有的参数都被当成字符串进行处理。
同时即使不传递任何参数,也会有一个默认的参数sys.argv[0]标识当前模块的名称(如module_2.py),所以我们自己使用的参数都是从sys.argv[1]开始的,下标1表示第一个传递的参数,依次类推(如23)。
模块包和搜索路径
一个python文件就是一个模块,使用独立的命名空间,但实际使用过程中单单用模块来定义python功能显然还不够。
因为一个大型的系统几千上万个模块是很正常的事情,如果都聚集在一起显然不好管理并且有命名冲突的可能,因此python中也出现了一个包的概念。
包(package),通过使用“点模块名称”创建python模块命名空间的一种方法。
例如,模块名称a.b表示一个在名为a的包下的名为b的子模块。
就像使用模块让不同模块的作者无需担心彼此全局变量名称(冲突)一样,点模块名称让多模块包的作者无需担心彼此的模块名称(冲突)。
模块包在文件系统中的表示就是一系列目录的集合,通过目录的层级结
构形成模块包的层级结构,最终的模块文件就位于最后的目录中。
比如定义一个简单的模块在包
pkg下,那么执行如下步骤:
1、在f:
\pro-files\workspace\目录下建立一个目录,名称是mypython
[python]viewplaincopyprint?
1.#-*-encoding:
utf-8-*-
2.pkg.module_3.py模块的内容
3.
4.print(helloworld)
5.
6.deffunc1():
7.print(thisisfuncitonone)
注意第2步,必须要在每一个包目录下建立一个__init__.py的模块,这个是python的规定,用来告诉python解释器将该目录当成一个内容包,即该目录是一个包,里面包含了python模块的。
这个是必须的,如果不指定,则我们在python的交互模式下导入module_3.py这个模块时会报如下错误:
[python]viewplaincopyprint?
2.traceback(mostrecentcalllast):
3.file<stdin>,line1,in<module>
4.importerror:
nomodulenamedpkg.module_3
因此,包目录下的__init__.py模块是必须的,但内容是可选的,可以为空内容,也可以写一些代码或作其他用途。
pvm在导入某个包下的模块时会先导入这个包下的__init__.py模块,比如我们在__init__.py模块里添加内容:
1.print(thisis__init__module)
然后,在交互模式下重新导入这个包,则输出效果如下:
[python]viewplaincopyprint?
2.thisis__init__module
3.helloworld
4.>>>
可见,pvm首先加载的是__init__.py模块,然后才是找该目录下的其他模块并进行加载。
篇二:
python脚本入门学习经典手册
python脚本使用详解
目录
写在前面的话...................................................................................2
前言....................................................................................................3
一、python语言基础....................................................................5
1数学运算符..................................................................................5
2字符串操作..................................................................................63模块的使用(modules)............................................................94使用def构建函数.....................................................................125流程控制结构:
if,while,for..............................................13
6简单输入和输出........................................................................20
二、arcgis&python....................................................................211如何创建地理处理对象(geoprocessorobject)....................21
2获取地理处理帮助....................................................................22
2.1举例:
如何使用geoprocessorprogrammingmodel中的lists
....................................................................................................233使用地理处理工具——toolboxes和aliases...........................244在建模中使用脚本(scriptsinmodelbuilder).......................265在pythonwin里调试地理处理脚本........................................38
5.1调试选择和消息.................................................................38
5.2pythonwin的调试工具........................................................41
5.3地理处理工具举例..............................................................426使用描述(describe)和存在(exists)获取数据信息..........44
6.1描述......................................................................................44
6.2存在(exists).....................................................................47
6.3在循环中使用描述和存在..................................................477在python脚本中使用地图代数(mapalgebra)..................528数据管理和指针(datamanagementandcursors)...............54
8.1数据管理(datamanagement).......................................54
8.2指针(cursors)..................................................................58
附录1:
地理处理脚本中输入&输出方法指南...........................64
附录2:
其他..................................................................................66
写在前面的话
一直想学习arcgis中的python脚本,大四下半学期终于有了时间,可是想找到这么一本好的教材不容易。
茫茫互联网,终于找到了旧金山州立大学jerrydavis教授的个人主页,对其中《》如获至宝,独乐乐不如众乐乐,现在将其教程翻译并结合自己的学习情况给出总结。
希望能够给更多想学习python的同学一个参考。
另外,在我刚开始接触python时,是看了台湾辅仁大学一位老师的视频课件,在此致谢。
我想从两个大部分总结:
一、python语言基础;二、
arcgis&python。
其中第一部分参考了《版)》、《python编程金典(读书笔记)》等书籍文献。
对于多数读者来说,可能或多或少有一些编程基础,所以理解起来应该不成问题。
文中多数数据来自jerrydavis教授的主页,放在“c:
\prog”目录下,为了直观,我将运算结果一并编辑,方便参考。
值得一提的是arcgis的在线帮助文档,一个实时更新的gis宝库,很多专业性知识都可以找到答案,点击链接文帮助、arcgis9.3.1或9.3英文帮助。
获取更过脚本例子来学习:
esri的地理处理模型和脚本工具库是个不错的选择。
由于我也是初次接触,翻译或者心得难免有纰漏之处,希望同仁们可以多多交流!
前言
在gis建模或gis数据管理中,你可能经常需要处理一系列步骤才可以完成的工作;你可能有一个工作目录下的数据需要重投影、裁剪到研究区域,或者用某种方法组合成期望的结果;我们也经常需要根据不同情形用不同方法处理数据,因此我们需要作出选择,而高质量的决策需要考虑很多低水平的决策,这可以通过脚本程序模型辅助完成。
脚本编程的主要目的是使枯燥的处理数据工作自动化,通过
逻辑来指挥处理过程。
我想自动化和逻辑是关键,它们区别于我们多数使用计算机时的交互活动。
我们发e-mail,写文章或者设计地图,都需要和计算机交互,而处理一系列数据,我们需要自动化和利用逻辑来指导自动化。
在地理处理脚本逻辑中,我们需要在允许我们做的事情中作出决定,比如,处理栅格数据不同于矢量数据,或为没投影的数据设置投影,或处理仅在特定时间搜集的数据集。
对于重要的gis工作来说,脚本以及其他形式的程序是必需的,而非可有可无。
在接下来的联系中,我们会探索python的使用以及创建脚本来使用arcgis里众多的地理处理工具。
所有你能在arctoolbox或model中使用的工具都能够用在python脚本中,这些脚本可以生成脚本工具,像其他地理处理工具一样使用。
一、python语言基础
安装pythonwin,在…\arcgisdesktop9.3.iso\desktop\pythonwin目录下可以找到pythonwin的安装程序,默认是不安装的
,
任何脚本在基于dispatch的地理处理过程中工作。
arcgis10中引入了全新的pythonwindow来增强内嵌的python体验。
警告:
不要尝试更新随arcgis安装的python到一个新的版本!
下面介绍python
的一些简单语法和规
则。
1数学运算符
python提供了多
样化的通用数学运算
符——多数编程语言
的特征,以及许多通过import的modules提供的符号。
常用的有+,-,*,/,**(幂),%(取模,即除后的余数)。
下面的表格显示了整型(integer)和浮点型(float)各种
组合运算的结果,记住一条规则,只要参与运算的有浮点型,篇三:
python学习进阶方法
python学习进阶方法
parta——>>>那python是一种什么语言?
python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度。
它可以用来开发各种程序,从简单的脚本任务到复杂的、面向对象的应用程序都有大显身手的地方。
python还被当作一种入门程序员最适合掌握的优秀语言,因为它免费、面向对象、扩展性强同时执行严格的编码标准。
partb——>>>python品质超群?
虽然python常用来创建简单的脚本,但它采用的编程技术可不简单,比如面向对象编码、套接字、线程和gui等等。
假如你是一位刚入流的程序员,这些特性显然对你太有帮助了,因为你可以很快熟悉有益的编程语法和编码实践,之后再学习其他语言,比如java或者c++等引入的技术概念就容易多了。
脚本可以单独执行,不过,你还可以通过类文件和各类对象类型以充分利用这种语言的强大功能。
比如,完成同一个任务,c语言要写1000行代码,java只需要写100行,而python可能只要20行。
所以python是一种相当高级的语言。
partc——>>>python和其他语言的区别
python区别于其他面向对象语言的关键有两点。
首先,python强调空格和编码结构,从而令开发者的代码具有良好的重用性。
其次,执行脚本之前无须编译python代码,这就是它为什么被当作脚本语言的原因。
partd——>>>用python可以做什么?
可以做日常任务,比如自动备份你的mp3;可以做网站,很多著名的网站包括youtube就是python写的;可以做网络游戏的后台,很多在线游戏的后台都是python开发的。
总之就是能干很多很
多事啦。
python当然也有不能干的事情,比如写操作系统,这个只能用c语言写;写手机应用,只能用objective-c(针对iphone)和java(针对android);写3d游戏,最好用c或c++。
许多大型网站就是用python开发的,例如youtube、instagram,还有国内的豆瓣。
很多大公司,包括google、yahoo等,甚至nasa(美国航空航天局)都大量地使用python。
parte——>>>如果我是小白,我满足什么条件可以学python呢?
——会使用电脑,但从来没写过程序;
——还记得初中数学学的方程式和一点点代数知识;
——想从编程小白变成专业的软件架构师;
——每天能抽出半个小时学习。
——最重要的是不忙心情比较轻松。
哈哈哈哈哈,不要跟我说其实你们都是可以的。
partf——>>>如果我是小白,学python要准备什么呢?
学习python必不可少的一部肯定是工具,一种是编码器,一种是解释器:
1)编码器就是python。
目前,python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容