`

简明Python教程笔记整理

阅读更多

 

 

闲得没事干 又没心思深入研究其他东西 找了个折中的办法 看点新玩意儿 事实证明还是成功的 这次是Python 看的是http://sebug.net/paper/python/index.html 《简明Python教程》 只当扩充眼界 说实话 你让我Python搞个实际可用的东西 我依旧无能为力 悲催吧

 

简单把笔记整理一下 跟我认知中相同的部分都略过了

* Python中 字符串 '...' "..."是一样的 '''...'''  """..."""这样的三引号代表多行字符串

* 自然字符串用 r"...\n" 这样\n不会被转义

* Unicode字符串 u"..."

* 在行末加入\ 表示下行继续 

* 通过raw_input()获取输入

* 注释语句用#

* Python中的if语句 if-elif-else

* Python中的while语句 while...else(可选)..

* Python中的for语句 for...in.. 注意Python没有for(;;) for in类似于foreach/for(i:I)这样的形式

扩展for i in range(1,5) ----[1,2,3,4]

* 以上程序块不是通过{} 而是通过缩进 在判断语句后跟的是:即

 

	if(...):
		...
		while(...):
			...
	else:
		...  这样的形式
 

 

* break终止循环 不会执行可选else中的内容

* 函数定义 def function():

* 代参数的 def function(a,b=5); #这个还带默认参数 默认参数必须在参数表最后 (a=5,b)这样是错误的

* 全局变量 global x (否则内部变量都会被作为私有变量处理)

一个函数定义例子:

 

 

	def f(a,b=5,c=10)
	f(3,7) ---> a=3,b=5,c=10
	f(25,c=24) ---> a=25,b=5,c=24
	f(c=20,a=100) ---> a=100,b=5,c=20

 

* retun None(None就是常见的null)

* 关于DocString 文档字符串

def a():

'''A........     

........

.......。'''

....

文档字符串是一个多行字符串(三引号)

大写开始,句号结尾

第二行为空行

第三行开始是描述介绍

当调用print a.__doc__时 会被打印出来

* 使用sys模块

import sys 或者 from sys import *(感觉类似java中引用package包)

* 自己定义模块 mymodule.py (其实就是使用其他py)

 

 

def sayhi():
		...
		version='0.1'
 

 

使用

 

 

import mymodule
	mymodule.sayhi()
	print mymodule.version
 

 

* 数据结构部分

* 列表list 

用[]包含 [a,b,c] 有append del len(list) sort等方法

* 元组 

用()包含 (a,b,c) 空元组a为 a() 特别注意 元组 b 要写成 b(1,) 最后个逗号必须

* 列表和元组的区别 列表是可变的 元组是固定的

* 元组的打印方法

 

print "&s is &d years old" % (name,age)

 

(好吧 这个不是类似于C了么)

* 数据字典 

ab={a:1,

b:2,

c:3}

取值方法 ab["a"]

* 数据词典打印

 

for name,address in ab.items():
		print "&s at &s" % (name,address)
 

* 另一种打印

 

if "aaa" in ab: #检查是否存在
		print ab["aaa"]
 

* 序列 序列下标从0开始 0,1,2,3......

下标支持负数 0,1,2........-3,-2,-1(最后一个为-1)

* 序列切片操作 str[1:3] 1-3(这是下标 截取了1,2两个元素 末尾元素不在其中)

其他一些切片str[:-1] str[1:] str[:]

* 切片操作是copy了一个新的对象(不是赋值 赋值是产生一个参考,仍然指向同一个元素) (好吧 又来搞这个问题了)

* Python中一切都是对象 一个整数也是一个对象

* self参数 表示自己 定义函数时其实都有一个self 比如count(self) 当定义参数列表 最好第一个为self 之后为自己的 而无参也最好写个self

self类比下类似于this

* 初始化方法

def __init__(self) 当类对象建立时会被执行

同样可以类比构造函数

* 同理还有__del__(self..) (析构)等方法

* _aaa 表示这是一个私有变量(默认规则 当做命名规则吧 不是系统认定)

* __aaa 声明一个私有变量 这个是系统认定的 不做声明时都是共有public的

* 继承

class Super

class Chile(Super) 注意(...)其实是一个元组 也就是 可以多重继承 class a(b,c,d)

* 输入输出 raw_input / print

* 文件 

f = file("urlPath",'w') #'w'是模式 常用的有'r'读(默认),'w'写,'a'追加

f.write(...)

f.close()

f.readline() 都是常用方法

* 存储器pickle 有一个cPickle 是用c写的 速度上更快

这是一个持久化对象 使用方法:

 

import cPickle as p
	shoplist=['apple','mango','banana']
	f=file(shoplist,'w')
	p.dump(shoplist,f) #存操作
	store=p.load(f) #取操作
 

 

* Python中的异常处理

 

try:
		...
	except EOFError:
		...
	except:
		...
	finally:
		...
	else:
		...
 

其实是一样的

* 抛出异常 raise xxxExeption() (等同于java的throw)

 

后面的部分就是系统模块的东西 基本就是个list

* 命令行参数 sys.argv 该列表中至少包含一个项目,即当前运行程序的名称,作为sys.argv[0]

* os模块

os.sep 路径分割符(根据系统各不相同 如linux是'/' windows是'\\')

os.name 平台名称 windows--nt linux--posix

os.getcwd 当前目录(Python脚本工作目录)

os.getEnv os.putEnv 环境变量

os.listdir 返回所有目录和文件

os.remove 删文件

os.sytem 运行shell

os.linesep 终止符 windows--'\r\n' linux--'\n'  mac--'\r'

os.isfile os.isdir 是否为文件/目录

os.path.split 返回目录名和文件名 例如 c:\\abc\bc\abc.txt 返回c:\\abc\bc 和 abc.txt

* Python中的更多内容

* 特殊方法

比如 __init__ , __del__

还有 __getitem__() 使用x[key]索引操作

__str__() 即toString

__lt__(self,other) 小于操作 compare?

__len__(self) 序列对象内置的len方法

* 列表综合

得到一个新的列表 包含原列表中所有大于2的元素 将其乘2后存储

 

	listone=[2,3,4]
	listtwo=[2*i for i in listone if i>2]
 

最终得到listtwo是[6,8]

* 函数中接收元组,列表(作参数)

def(a,*b)

其中*b就是一个元组 所有多余的参数都被认为是元组b中的元素

def(a,**b)

**b表示字典 所有多余参数被认为是key/value 放在b中

* lambda形式

用于创建新的函数对象,并在运行时返回他们

 

def make_repeater(n):
		return lambda s:s*n #跟一个表达式 并且只能跟表达式
	twice = make_repeater(2)
	print twice('word')
	print twice(5)
 

 

打印结果是 wordword和10

lambda表达式不懂 求科普

* exec和eval

吐槽:js中听过这两个强大的东西

exec 执行存储在字符串或文件中的Python语言

exec 'print "aaa"' 输出 aaa

eval 计算存储在字符串中的有效表达式

eval ('2*3') 输出 6

* assert 用于声明某个条件是真的

当assert失败,引发一个AssertionError

assert也不是非常了解 求科普

* repr 取得对象的规范字符串表示 比如取得打印时的样子

反引号也有同样的作用`i`

一般的 有eval(repr(object))==object

同样这里的结果可以通过__repr__设置

 

附件是笔记 用notepad++写的 为了有语法高亮着色 保存成py文件了 txt一样看

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics