ArcGIS Python开发-Python基础入门

0
分享 2017-06-26
1.数据类型
整数(int):1,-100浮点数(float):1.23字符串(str):'abc',"xyz"布尔值(bool):True、False空值:None
2.变量和常量
变量定义格式:变量名=值,示例:
checked=True
常量定义格式:常量名=值,示例:
PI=3.14

3.字符串与编码
  1. 字符编码ASCII:一个字节编码Unicode:两个字节编码UTF-8:可变长编码

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

  2. 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")
  3. 注意事项[1] 文件头注明编码:
    # -*- coding: utf-8 -*-
    [2] 源码文件使用UTF-8 without BOM编码保存[3] 中文字符串赋值时使用unicode编码


4.复合数据类型
4.1.list和tuple
  1. 定义格式list列表:
    keywords = ["china","map","gis"]
    tuple元组:
    keywords = ("china","map","gis")
  2. 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
  3. list和tuple的区别list中元素可变。tuple中元素不可变。
  4. 切片操作用来替代循环语句。keywords[起始索引号:结束索引号:步长]

    不含结束索引号的元素。



4.2.dict
字典是键值对集合
  1. 定义
    attrs = {"id":1,"type":"point"}
  2. 基本操作访问:
    atts["id"]
    或者
    atts.get("id")
    删除:
    atts.pop("id")
    删除:
    del atts["id"]
    所有key:
    atts.keys()


4.3.set
集合是一个无序不重复元素的集。
  1. 定义方式1:
    uValues = set("a","b","c")
    方式2:
    uValues ={"a", "b", "c"}
  2. 基本操作添加:
    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.流程控制语句
  1. if语句
    if <条件1>: print 1elif <条件2>: print 2else: print 3
  2. for语句
    for x in 序列: print x
  3. while语句
    while 条件: print 执行
  4. break和continue语句
  5. pass语句占位符


7.高级特性
7.1.迭代
  1. list和tuple类型的迭代迭代value:
    for … in
    迭代索引和value:
    for i, value in enumerate(list)
  2. dict类型的迭代迭代key:
    for key in dict
    迭代value:
    for value in dict.itervalues()
    迭代key和value:
    for key ,value in dict.iteritems()
  3. 判断对象是否可以迭代
    from collections import IterablecanIter = isinstance(obj, Iterable)


7.2.列表推导式
用于快速生成列表。
  1. 方式1:
    [x*x for x in range(0,20)]
  2. 方式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. 方式1将列表推导式中的更改为()即可。
    a = (x*x for x in range(0,20))a.next()
  2. yield关键字在需要返回函数的地方使用yield关键字。


8.函数
  1. 函数定义
    def func_name(arg1): if arg1>10:     return arg1: return 0
  2. 默认参数
    def power(x, n=2): s =1 while n>0:     n = n-1     s = s *x return s
     

    默认参数需要使用不可变对象,否则会出现逻辑错误。

  3. 可变参数
    def calc(*numbers): <函数体>
     

    可变参数接收的是tuple类型。

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

    f是函数

  5. map()函数map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。效果类似:
    map(f,[1,2,3]) = [f(1),f(2),f(3)]
  6. reduce()函数reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。效果类似:
    reduce(f,[1,2,3]) = f(f(1,2),3)
  7. filter()函数filter()函数接收两个参数,一个函数,一个序列,filter将传入的函数依次作用于序列的每个元素,并只保留结果中是True的。
  8. sorted()函数支持自定义的排序函数作为参数。
  9. lambda表达式定义格式:
    lambda a,b: a+b
  10. 其他常用函数dir():显示模块定义len():返回长度type():返回对象的类型isinstance():检验对象类型range():生成数字序列help():查询帮助


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

函数详情。
"""
pass

10.模块和包
  1. 模块模块是一个单独的py文件,模块名即为文件名。
    # fibo.pydef fib(n): pass
  2. 模块导入方式1:import语句
    import fibo#调用fibo.fib(10)
    方式2:from 模块 import 模块函数
    from fibo import fib#调用fib(10)
  3. name模块执行:在模块中增加name判断。
    if __name__ == "__main__": #调用模块定义的内容
  4. 作用域私有函数约定使用__开头来命名函数。
  5. 第三方模块使用pip安装。
  6. 模块搜索路径模块搜索路径定义在sys.path中。可动态添加:
    sys.path.append("newpath")
    ,或者定义环境变量PYTHONPATH。
  7. 包python使用文件夹定义包,文件夹中必须包含
    __init__.py
    ,该文件内容可为空,或者定义
    __all__
    变量。
    __all__
    定义了可以导入的模块列表:
    __all__ = ["point","line"]


11.类
  1. 类定义与实例化类定义:
    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。

  2. 私有属性定义约定私有属性使用一个下划线_开头命名。
  3. @property定义属性get和set方法
    class Student(object): @property def name(self):     return self.__birth @name.setter def name(self, value):     self.__name = value
  4. 可变类型的属性定义
    class Mapping: def __init__(self,value):     self.value = value     self.items_list = 
  5. 多继承
    class subClass(parent1,parent2): pass


12.异常处理
  1. try语句
    try: <执行>except ValueError as e: <异常处理>finally: <执行完的处理>
  2. 自定义异常类直接或间接继承Exception类。
    class MyError(Exception): #覆盖父类 def __init__(self, value):     self.value = value def __str__(self):     return repr(self.value)
  3. 错误记录与调试使用logging模块,记录日志信息。13. 编码原则
  4. 使用4个空格缩进
  5. 使用文档注释
  6. 类名使用驼峰命名,函数和方法使用小写和下划线。类中的方法第一个参数使用self。


13.IO编程
13.1.文件操作
  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()
  2. 读取模式r(只读)、b(二进制)、w(写) 、a(追加)、r+(读写)
    f = open("c:\img.jpg", "rb")f.read()
     

    windows平台上读取文本文件时,会在行尾自动添加行结束符,对JPEG之类文件的读取会破坏结构,建议一切以二进制打开。

  3. 字符编码读取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编码,外部使用各自编码。
  4. 常用方法
    read()
    :一次性读取到内存
    read(size)
    :读取指定字节的内容
    readline()
    :读取一行
    readlines()
    :读取所有行
    write()
    :写入


13.2.目录操作
  1. 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标准库
  1. 操作系统接口:os和shutil
  2. 命令行参数:sys.argv
  3. 正则表达式:re
  4. 数学:math和random
  5. 日期和时间:datetime、time
  6. 数据压缩:zlib、gzip、bz2、zipfile、tarfile
  7. xml操作:xml.dom、xml.sax
  8. json操作:json
  9. 进程与线程:multiprocessing、Queue、Pipes、Threading
  10. 日志:logging


参考资料
[1] Python2.7教程
[2] Python入门指南
[3] Python2.7字符编码
[4] 官方文档
文章来源:http://www.jianshu.com/p/9380b30cfd05

0 个评论

要回复文章请先登录注册