1 python语言中对象的类型和内存都是运行时确定的。在创建也就是赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型。
2 GAE 英文全称为 Google App Engine。它是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台,目前支持python、java和php开发
3.HTTPError: HTTP Error 403: Forbidden
import sys,urllib2 req = urllib2.Request("http://blog.csdn.net/nevasun") fd = urllib2.urlopen(req) while True: data = fa.read(1024) if not len(data): break sys.stdout.write(data)
这是由于网站禁止爬虫,可以在请求加上头信息,伪装成浏览器访问。添加和修改.这样爬下来的网页是乱码,网站是utf-8编码的,需要转换成本地系统的编码格式,因此要改两个地方:
import sys,urllib2 headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6)Gecko/20091201 Firefox/3.5.6'} req = urllib2.Request("http://blog.csdn.net/lotluck",headers=headers) content = urllib2.urlopen(req).read() ## UTF-8 type = sys.getfilesystemencoding() # local encode format print content.decode('UTF-8').encode(type) # convert encode format
4 https与http区别
HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,基于HTTP,使用安全套接层(SSL)作为HTTP应用的子层,HTTPS使用443端口,SSL使 用40 位关键字作为RC4流加密算法,HTTPS和SSL支持使用X.509数字认证。
http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方
也可以验证客户端的身份。
1.https协议需要到ca申请证书,一般免费证书很少,需要交费
2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
3.http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
4.http的连接很简单,是无状态的
5.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
5.迭代器(iterator)有时又称游标(cursor)迭代器就是有一个next()方法的对象,而不是通过索引来计数的。当你或是一个循环机制(例如for语句)需要下一个项时,调用迭代器的next()方法就可以获得它。条目全部取出后,会引发
一个StopIteration异常,这并不是表示错误的发生,只是告诉外部的调用者,迭代完成。可以使用iter()函数来创建迭代器,另外还有一种就是自定义类。
>>> a = [122,221,333]
>>> b = iter(a)
>>> b.next()
122
>>> b.next()
221
>>> b.next()
333
>>> b.next()
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
b.next()
StopIteration
>>>
>>> lst = range(2)
>>> it = iter(lst)
>>> it
<listiterator object at 0x0000000002C5EBE0>
>>> it.next()
0
>>> it.next()
1
6.变量交换
>>> x = 6
>>> y = 5
>>> x,y = y,x
>>> x
5
>>> y
6
7.if…elif…else语句
例子:
# if elif else语句
score = raw_input("score:")
score=int(score)
if(score >= 90) and (score <= 100):
print "A"
elif(score >= 80) and (score < 90):
print "B"
elif(score >= 60) and (score < 80):
print "C"
else:
print "D"
8.实现switch语句的功能
Python并没有提供switch语句,Python可以通过字典实现switch语句的功能。实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。
from __future__ import division
x = 1
y = 2
operator = "/"
result = {
"+" : x + y,
"-" : x - y,
"*" : x * y,
"/" : x / y
}
print result.get(operator)
9.另一种使用switch分支语句的方案是创建一个switch类,处理程序的流程。
a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false
,标识匹配不成功。如果匹配成功,程序往后执行。
b) 定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。
c) 重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。__iter__( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。
d) 编写调用代码,在for…in…循环中使用switch类。
例子:
class switch(object):
def __init__(self, value): # 初始化需要匹配的值value
self.value = value
self.fall = False # 如果匹配到的case语句中没有break,则fall为true。
def __iter__(self):
yield self.match # 调用match方法 返回一个生成器
raise StopIteration # StopIteration 异常来判断for循环是否结束
def match(self, *args): # 模拟case子句的方法
if self.fall or not args: # 如果fall为true,则继续执行下面的case子句
# 或case子句没有匹配项,则流转到默认分支。
return True
elif self.value in args: # 匹配成功
self.fall = True
return True
else: # 匹配失败
return False
operator = "+"
x = 1
y = 2
for case in switch(operator): # switch只能用于for in循环中
if case('+'):
print x + y
break
if case('-'):
print x - y
break
if case('*'):
print x * y
break
if case('/'):
print x / y
break
if case(): # 默认分支
print ""
10 字符串的连接
>>> nfc = ['11111111','22222222222']
>>> afc = ['33333333','44444444444']
>>> print nfc + afc
['11111111', '22222222222', '33333333', '44444444444']
>>> print str(1) + "dushuai"
1dushuai
>>> print '1' + "dushuai"
1dushuai
>>> print 1,'dushuai'
1 dushuai
>>>
11数值比较
>>> x = 2
>>> if 3 > x > 1:
print x
2
>>> if 1 < x > 0:
print x
2
12 同时遍历两个列表
>>> nfc = ['111','222']
>>> afc = ['333','444']
>>> for t1,t2 in zip(nfc,afc):
print t1 + "vs."+ t2
111vs.333
222vs.444
>>>
13 遍历列表同时得出序号和内容
>>> tong = ["zhao","tong","tong","du","shuai","love","you"]
>>> for index ,team in enumerate(tong):
print index,team
0 zhao
1 tong
2 tong
3 du
4 shuai
5 love
6 you
>>>
14. IDLE集成开发环境 内置函数成为BIF(built-in function) 在>>>的提示符下面输入pr或者其他,按下TAB就会出一组建议
15.python中的变量标识符没有类型,python在创建一个列表的就好像一个类似数组的数据结构来存储数据,数据项自上而下,有编号0,1,2,3。 。 。,列表中德数据可以像数组那样访问
movie=["wo","hen","ni"]
print movie[1]
用简单的一句话说,列表是一个打了激素的数组,里面可以混合数据类型
16 len(movie)测量长度,用for可以处理任意长度的列表,列表不支持越界检查
for each_item in movie: for循环会负责从列表起始位置开始
print each_item
coun=0;
while count < len(movie):
print(movie[count])
count=count+1
17.列表里面可以嵌套
movie = ["The Holy Grail","The Life of Brain",["11111","22222",[44,55,66],"3333"],"The meaning of Lif"]
for each_item in movie:
print each_item for循环只打印外列表的各个数据项
The Holy Grail
The Life of Brain
['11111', '22222', [44, 55, 66], '3333']
The meaning of Lif
两次for循环
for i in movie:
if isinstance(i,list):
for j in i:
print j
else:
print i
The Holy Grail
The Life of Brain
11111
22222
[44, 55, 66]
3333
The meaning of Lif
18 python模块放在哪里可以用一下代码
import sys;sys.path
19 range()BIF可以提供你需要的控制来迭代指定的次数。
for num in range(4)
print num
20 模块是一个包含Python代码的文本文件,Python中都有自己的命名空间 end=‘’自动换行
21 Python中的BIF就是用来与文件交互,Python的基本输入机制是基于行的;