ArcGIS Python开发-Python基础入门
分享
1.数据类型
整数(int):1,-100浮点数(float):1.23字符串(str):'abc',"xyz"布尔值(bool):True、False空值:None
2.变量和常量
变量定义格式:变量名=值,示例:
3.字符串与编码
4.复合数据类型
4.1.list和tuple
4.2.dict
字典是键值对集合
4.3.set
集合是一个无序不重复元素的集。
5.数据类型转换
转整型:
6.流程控制语句
7.高级特性
7.1.迭代
7.2.列表推导式
用于快速生成列表。
集合推导式:
7.3.生成器
列表推导式生成的列表占用内存,生成器生成的列表在调用next时生成。
8.函数
9.注释
#:单行注释'''…''':多行注释"""…""":doc注释,在函数名之后的注释。多行注释时,第二行应该空出来。
10.模块和包
11.类
12.异常处理
13.IO编程
13.1.文件操作
13.2.目录操作
14.常用的Python标准库
参考资料
[1] Python2.7教程
[2] Python入门指南
[3] Python2.7字符编码
[4] 官方文档
文章来源:http://www.jianshu.com/p/9380b30cfd05
整数(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:
UTF-8转unicode:u"中文".encode("utf-8")
"\xe4\xb8\xad\xe6\x96\x87".decode("utf-8")
- 注意事项[1] 文件头注明编码:
[2] 源码文件使用UTF-8 without BOM编码保存[3] 中文字符串赋值时使用unicode编码# -*- coding: utf-8 -*-
4.复合数据类型
4.1.list和tuple
- 定义格式list列表:
tuple元组:keywords = ["china","map","gis"]
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")
所有key:del atts["id"]
atts.keys()
4.3.set
集合是一个无序不重复元素的集。
- 定义方式1:
方式2:uValues = set("a","b","c")
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 <条件1>: print 1elif <条件2>: print 2else: print 3
- for语句
for x in 序列: print x
- while语句
while 条件: print 执行
- break和continue语句
- pass语句占位符
7.高级特性
7.1.迭代
- list和tuple类型的迭代迭代value:
迭代索引和value:for … in
for i, value in enumerate(list)
- dict类型的迭代迭代key:
迭代value:for key in dict
迭代key和value:for value in dict.itervalues()
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语句
方式2:from 模块 import 模块函数import fibo#调用fibo.fib(10)
from fibo import fib#调用fib(10)
- name模块执行:在模块中增加name判断。
if __name__ == "__main__": #调用模块定义的内容
- 作用域私有函数约定使用__开头来命名函数。
- 第三方模块使用pip安装。
- 模块搜索路径模块搜索路径定义在sys.path中。可动态添加:
,或者定义环境变量PYTHONPATH。sys.path.append("newpath")
- 包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.文件操作
- 读取文件基本流程:打开-->读取-->关闭。
简写方式,由python自动调用close()方法:try: f = open("c:\\text.txt","r") print f.read()except IOError,e: print efinally: if f: f.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编码的文本文件:
读取utf-8编码的文本文件: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
推荐方法,调用codecs模块:f = open("c:\\uft8text.txt","w")f.write(u"新增加".encode("utf-8"))f.close()
一般原则:内部使用unicode编码,外部使用各自编码。import codecswith codecs.open("c:\\gbktext.txt","r","gbk") as f: f.read()
- 常用方法
:一次性读取到内存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