python开发arcgis,ArcGIS Python开发-Python基础入门

1.数据类型

整数(int):1,-100浮点数(float):1.23字符串(str):'abc',"xyz"布尔值(bool):True、False空值:None

2.变量和常量

变量定义格式:变量名=值,示例:checked=True常量定义格式:常量名=值,示例:PI=3.14

3.字符串与编码

字符编码ASCII:一个字节编码Unicode:两个字节编码UTF-8:可变长编码计算机内存统一使用Unicode编码,保存在磁盘一般使用UTF-8编码。所以磁盘数据读取到内存,内存数据写入到磁盘就涉及到unicode与UTF-8之间的转换。

python中的字符串python中的字符串支持ASCII和Unicode编码,unicode编码的字符串使用u"字符串内容"表示。unicode转UTF-8:u"中文".encode("utf-8")UTF-8转unicode:"\xe4\xb8\xad\xe6\x96\x87".decode("utf-8")

注意事项[1] 文件头注明编码:# -*- coding: utf-8 -*-[2] 源码文件使用UTF-8 without BOM编码保存[3] 中文字符串赋值时使用unicode编码

4.复合数据类型

4.1.list和tuple

定义格式list列表:keywords = ["china","map","gis"]tuple元组:keywords = ("china","map","gis")

list的基本操作访问:keywords[0]增加:keywords.append("service")插入:keywords.insert(1,"extent")删除:keywords.pop()或keywords.pop(2)删除:keywords.remove("china")批量删除:del keywords[:2]取索引号:keywords.index("gis")排序:keywords.sort()倒排序:keywords.reverse()是否存在指定元素:"gis" in keywords

list和tuple的区别list中元素可变。tuple中元素不可变。

切片操作用来替代循环语句。keywords[起始索引号:结束索引号:步长]不含结束索引号的元素。

4.2.dict

字典是键值对集合

定义attrs = {"id":1,"type":"point"}

基本操作访问:atts["id"]或者atts.get("id")删除:atts.pop("id")删除:del atts["id"]所有key:atts.keys()

4.3.set

集合是一个无序不重复元素的集。

定义方式1:uValues = set("a","b","c")方式2:uValues ={"a", "b", "c"}

基本操作添加:uValues.add("d")删除:uValues.remove("b")删除重复元素:uValues = set([1,2,2,3,4])

5.数据类型转换

转整型:int(value)转浮点型:float(value)转字符串:str(value)转unicode:unicode(value)转bool:bool(value)

6.流程控制语句

if语句if : print 1elif : print 2else: print 3

for语句for x in 序列: print x

while语句while 条件: print 执行

break和continue语句

pass语句占位符

7.高级特性

7.1.迭代

list和tuple类型的迭代迭代value:for … in迭代索引和value:for i, value in enumerate(list)

dict类型的迭代迭代key:for key in dict迭代value:for value in dict.itervalues()迭代key和value:for key ,value in dict.iteritems()

判断对象是否可以迭代from collections import IterablecanIter = isinstance(obj, Iterable)

7.2.列表推导式

用于快速生成列表。

方式1:[x*x for x in range(0,20)]

方式2:[x*x for x in range(0,20) if x%2==0]

集合推导式:s = {x for x in "abracsdasd" if x not in "abc"}字典推导式:d = {x: x**2 for x in (2,4,6)}

7.3.生成器

列表推导式生成的列表占用内存,生成器生成的列表在调用next时生成。

方式1将列表推导式中的更改为()即可。a = (x*x for x in range(0,20))a.next()

yield关键字在需要返回函数的地方使用yield关键字。

8.函数

函数定义def func_name(arg1): if arg1>10: return arg1: return 0

默认参数def power(x, n=2): s =1 while n>0: n = n-1 s = s *x return s 默认参数需要使用不可变对象,否则会出现逻辑错误。

可变参数def calc(*numbers):  可变参数接收的是tuple类型。

函数参数函数式编程:允许将函数作为参数。def add(x,y,f): return f(x)+f(y) f是函数

map()函数map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。效果类似:map(f,[1,2,3]) = [f(1),f(2),f(3)]

reduce()函数reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。效果类似:reduce(f,[1,2,3]) = f(f(1,2),3)

filter()函数filter()函数接收两个参数,一个函数,一个序列,filter将传入的函数依次作用于序列的每个元素,并只保留结果中是True的。

sorted()函数支持自定义的排序函数作为参数。

lambda表达式定义格式:lambda a,b: a+b

其他常用函数dir():显示模块定义len():返回长度type():返回对象的类型isinstance():检验对象类型range():生成数字序列help():查询帮助

9.注释

#:单行注释'''…''':多行注释"""…""":doc注释,在函数名之后的注释。多行注释时,第二行应该空出来。def funcname():

"""函数简介

函数详情。

"""

pass

10.模块和包

模块模块是一个单独的py文件,模块名即为文件名。# fibo.pydef fib(n): pass

模块导入方式1:import语句import fibo#调用fibo.fib(10) 方式2:from 模块 import 模块函数from fibo import fib#调用fib(10)

name模块执行:在模块中增加name判断。if __name__ == "__main__": #调用模块定义的内容

作用域私有函数约定使用__开头来命名函数。

第三方模块使用pip安装。

模块搜索路径模块搜索路径定义在sys.path中。可动态添加:sys.path.append("newpath"),或者定义环境变量PYTHONPATH。

包python使用文件夹定义包,文件夹中必须包含__init__.py,该文件内容可为空,或者定义__all__变量。__all__定义了可以导入的模块列表:__all__ = ["point","line"]

11.类

类定义与实例化类定义:class Person(object): def __init__(self,name,age): self.name = name self.age = age def print_info(self): print "%s,%s" % (self.name,self.age) 类的实例化:lisa = Person("Lisa",25) 类中的方法第一个参数是self。

私有属性定义约定私有属性使用一个下划线_开头命名。

@property定义属性get和set方法class Student(object): @property def name(self): return self.__birth @name.setter def name(self, value): self.__name = value

可变类型的属性定义class Mapping: def __init__(self,value): self.value = value self.items_list =

多继承class subClass(parent1,parent2): pass

12.异常处理

try语句try: except ValueError as e: finally:

自定义异常类直接或间接继承Exception类。class MyError(Exception): #覆盖父类 def __init__(self, value): self.value = value def __str__(self): return repr(self.value)

错误记录与调试使用logging模块,记录日志信息。13. 编码原则

使用4个空格缩进

使用文档注释

类名使用驼峰命名,函数和方法使用小写和下划线。类中的方法第一个参数使用self。

13.IO编程

13.1.文件操作

读取文件基本流程:打开-->读取-->关闭。try: f = open("c:\\text.txt","r") print f.read()except IOError,e: print efinally: if f: f.close() 简写方式,由python自动调用close()方法:with open("c:\\text.txt","r") as f: print f.read()

读取模式r(只读)、b(二进制)、w(写) 、a(追加)、r+(读写)f = open("c:\img.jpg", "rb")f.read() windows平台上读取文本文件时,会在行尾自动添加行结束符,对JPEG之类文件的读取会破坏结构,建议一切以二进制打开。

字符编码读取GBK编码的文本文件:f = open("c:\\gbktext.txt","rb")u = f.read().decode("gbk")print u 读取utf-8编码的文本文件:f = open("c:\\uft8text.txt","rb")u = f.read().decode("utf-8")print u 写入utf-8编码的文本文件:f = open("c:\\uft8text.txt","w")f.write(u"新增加".encode("utf-8"))f.close() 推荐方法,调用codecs模块:import codecswith codecs.open("c:\\gbktext.txt","r","gbk") as f: f.read() 一般原则:内部使用unicode编码,外部使用各自编码。

常用方法read():一次性读取到内存read(size):读取指定字节的内容readline():读取一行readlines():读取所有行write():写入

13.2.目录操作

os模块读取所有环境变量:os.environ读取指定环境变量:os.getenv("PATH")读取当前目录的绝对路径:os.path.abspath(".")路径拼接:os.path.join("c:\demo","text.txt")创建目录:os.mkdir("c:\demo")删除目录:os.rmdir("c:\demo")拆分路径和文件:os.path.split("c:\demo\text.txt")拆分扩展名:os.path.splitext("c:\demo\text.txt")文件重命名:os.rename("old.txt","new.txt")删除文件:os.remove("new.txt")目录判断:os.path.isdir(path)文件判断:os.path.isfile(path)

14.常用的Python标准库

操作系统接口:os和shutil

命令行参数:sys.argv

正则表达式:re

数学:math和random

日期和时间:datetime、time

数据压缩:zlib、gzip、bz2、zipfile、tarfile

xml操作:xml.dom、xml.sax

json操作:json

进程与线程:multiprocessing、Queue、Pipes、Threading

日志:logging

参考资料

[1] Python2.7教程

[2] Python入门指南

[3] Python2.7字符编码

[4] 官方文档

文章来源:http://www.jianshu.com/p/9380b30cfd05

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值