python学习笔记
变量:可变化数据对象的程序标识符;可以包括字母,数字和下划线(_)。不能以数字开头
str 、repr和反引号是将Python值转换为字符串的3中方法:函数str让字符串更易于阅读,而repr(和反引号)则把结果字符串转为合法的Python表达式
一、数据类型:
字符串:
序列有两种:(tuple和list区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更)
列表: [ ] 例:arg[1][2:] 表示取第一个命令行,但去掉前两个字节
元组:() 元组中只包含一个元素时,需要在元素后面添加逗号
集合:一组无序对象,set()函数,集合内元素不能重复
字典:一个关联数组或散列表,其中包含通过关键字索引的对象。{}
例:stock = {
"name" : "goog",
"shares" : 100,
"price" : 490.10
}
访问:name = stock["name"]
value = stock["shares"] * shares["price"]
插入或修改:stock["shares"] = 75
stock["date"] = "June 7,2007"
二、函数
1、系统库提供内部函数
--系统库函数
字符函数库(默认库):help(str)
数学函数库(非默认库):需import math
>>> import math
>>> val = math.sin(math.pi / 6)
>>> print val
网络编程库:import socket
操作系统库函数:import os
>>> import os
>>> os.getcwd() 返回当前工作路径
'C:\\Python27'
>>> a = os.popen("grep alex lock.txt")
a.read() #读取a的值
...
2、第三方提供函数
例如:httplib2
linux系统:easy_install httplib
win系统:python setup.py install
import urllib
import webbrowser
url = 'http://www.163.com'
content = urllib.urlopen(url).read()
open('163.com.html','w').write(content)
webbrowser.open_new_tab('163.com.html')
3、自定义函数
预设值问题
函数调用赋值顺序问题
-一般情况下是一 一对应关系
-可以指定形参--赋值
-有预定义值的参数不能先于无预定义值参数被赋值
help(str) 查看所有字符串函数
strip() 去除空格
split()
len()
help()
id()
xrange()函数: python2
raw_input() #会把所有的输入当作原始数据(raw data),然后将其放入字符串中
input() #input会假设用户输入的是合法的Python表达式
type()
len()
dir() :列出对象上的可用方法
range()函数: python3
d = range(8,1,-1) #d = 8,7,6,5,4,3,2
print(format(val,format_modifier)):格式化输出
val:值
format_modifier:格式字
print(format(12.234,'6.3f')) 6输出占位 3精度
print(format(0.12345,'4.2%'))
三、生成器:使用yield的函数
调用生成器函数将创建一个对象,该对象通过连续调用next()方法(在python3中是__next__()),生成结果序列
例1:
def countdown(n):
print "Counting down!"
while n >0 :
yield n
n -= 1
例2:模拟tail命令
#!/usr/bin/env python2.6
import time
import sys
def tail(f):
f.seek(0,2)
while True:
line = f.readline()
if not line:
time.sleep(1)
continue
yield line
def grep(lines,searchtext):
for line in lines:
if searchtext in line:
yield line
wwwlog = tail(open(sys.argv[1]))
pylines = grep (wwwlog,"sda2")
for line in pylines:
print line,
四、协程
通常,函数运行时要是用一组输入参数。但是,也可以把函数编写为一个任务,从而能处理送给它的一系列输入。这类函数称为协程
通常,函数运行时要是用一组输入参数。但是,也可以把函数编写为一个任务,从而能处理送给它的一系列输入。这类函数称为协程
五、对象与类
六、异常
(1)try...except...
try:
f = open("file.txt","r")
except IOError as e:
print e
(2)raise
raise语句用于手工引发异常。引发异常时,可以使用任意一个内置异常,如下所示:
raise RuntimeError("Computer says no")
(3)with
with语句通常用于与系统资源或执行环境相关的对象,如文件、连接和锁定。但,用户定义的对象也可以定义它们自己的自定义处理
import threading
message_lock = threading.Lock()
...
with message_lock:
messages.add(newmessage)
七、模块
导入模块:
import moduleName
from module import sysHi #确定自己不会导入多个同名函数(从不同模块导入)的情况下,不希望在每次调用函数的时候,都要写上模块的名字
例如:from math import sqrt
sqrt(9)
import moduleName as newName
>>> import sys
>>> dir(sys)
文件模块:
file('user.txt','w')
>>> a = file('user.txt')
>>> for line in a.readlines(): print line.split()[0],
八、获得帮助
help('模块名')
print 模块名.方法
九、控制语句
continue 结束本次循环,进入下次循环;continue后的代码不会执行
break 跳出循环
1)if ()
布尔表达式:Ture(1)、 False(0)
关系表达式:>= <= == != .................................
逻辑表达式: and or not
2)while循环语句
例:网络刷博器爬虫
1、如何刷‘阅读次数’
2、如何关闭浏览器
import webbrowser as web
import time
import os
import random
count = random.ranint(20,40)
i = 0
while i <= 5:
web.open_new_tab('http://www.baidu.com')
i = i + 1
time.sleep(0.8)
else:
os.system('taskkill /F /IM chrome.exe')
3)for i in range(3):
.....................
else: #for正常循环结束后,执行该else语句
.....................
4)exec语句和eval语句
exec 执行字符串的语句
eval 计算python表达式