python复习笔记

博主为了面试复习Python和SQL,分享了《Exploring Python》一书中的内容,包括Python处理数据的便利性,基本语法如注释、类型、函数、索引和切片,模块导入以及条件语句等。文中提到了Python中int类型的无上限特性,以及方便的内置函数和操作符。
摘要由CSDN通过智能技术生成

楼主明天去湾区面一家默默无闻却已经上市了的公司,据说要面python和sql,所以pick up一下。求有工作啊!

楼主使用的是这本书:exploring python,反正是课堂使用的教材。突然怀念起了上CIT590的日子,认识了几个不错的小伙伴。

===================================================================================

python处理数据十分方便,语法松垮,各种不用考虑overflow和声明异常(必要的时候还是要raise exception的),的确蛮好用的:

第一章:
0. # 表示注释


1. 基本类型:
int没有upper bound...太逆天...都不用考虑overflow了
float就是小数啦,2.3e3这种科学记数法也是这一类。
boolean是True / False,逻辑的操作用and / or / not


2. 函数:
abs()可以直接用。。。是一个function
len()返回字符串里面字符个数
min()无论接受多少数字都可以返回最小的那个
int("45")返回45;str(45)返回"45"
eval("45 + 1")就是eval()这个函数接受一条数学公式
type()函数返回一个变量的种类
range(1, 10) 返回1到9的list
raw_input()函数从输入流里面读入输入存为string,input()函数从输入流里面读入,存为number
print statement接受一系列的用逗号(" , ")隔开的值,并且打印出来


3. Indexing(slicing)
[]操作符就是用来取子字符的,str[start: end]返回下标为start到(end-1)之间的字符串
如果start的default值是0,end的default值是len(str)


4. Modules and dot notation
import math就是使用math这个模块,其实就是一个库


第二章:
0. 写python文件
在mac的terminal里面输入idle可以直接使用python的ide! 
写一个.py结尾的文件,输入python xxx.py就可以运行
python是一行一行解析的,没有括号表明block,没有分号表明statement结束


1. assignment
sum, diff, prod = x+y, x-y, x*y 这样一起赋值也可以
x, y = y, x 相当于swap,直接被吓哭...


2. conditionals
############## if #############

if percent >= 90.0:
	# do 1
elif percent >= 80.0:
	# do 2
else:
	# do 3
############## while #############
while num != -1:
	# do 1
############## for loops #############
for year in range(1, 6): # 1, 2, 3, 4, 5
	# do 1


第三章:
0. 定义函数
def areaOfRect (w, h):
	return w * h

1. global b 表明b是全局变量

2. raise exceptions
if rate < 0:
	raise RuntimeError, 'Negative interest rate'

3. None可以用来初始化一个不知道将来有什么值的变量


作为练习,简单地写一个计算自然底数e的函数:
import math

def cal_e():
    fac = 1
    e = 1
    for i in range(1, 11):
        fac *= i
        e += 1.0 / fac
    return e

def main():
    print 'Math module ', math.e, ' calculate e ', cal_e()

main()


第四章:
第一部分:
1. list 
list,这个数据结构也是逆天,这样组合也可以:
lsttwo = [1, 2.4, 'abc', [1, 4, 7, 9, 12]]
list是mutable的,可以通过直接赋值来修改里面的值,比如lst[1] = 5
del lst[3]删除下标为3的元素


2.来一波操作:
lst = [1, 4, 7, 9, 12]
>>> lst[2]
7
>>> lst[2:]
[7, 9, 12]
>>> 4 in lst
True
>>> lst + [3, 4]
[1, 4, 7, 9, 12, 3, 4]
>>> [2, 3] * 4
[2, 3, 2, 3, 2, 3, 2, 3]
>>> max(lst)
12
>>> list('abc')
['a', 'b', 'c']


看了这些操作我是觉得很逆天,如此简约


3. list还支持一系列点操作
s.append(x), s.insert(i, x), etc...


4. 二维数组的declare and init:
data = [None] * 5
for i in range(0, 5):
	data[i] = [0] * 5


5. zip(),这个函数用来处理与点相关的程序应该蛮好用的:
zip([x1, x2, ... , xn], [y1, y2, ... , yn])
返回n个tuples:
[(x1, y1), (x2, y2), ... , (xn, yn)]


6. Python uses reference assignment
>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 7
>>> a
[1, 7, 3]
就是a, b指向同一块内存。要想传递一份copy过去可以使用slicing的操作:
>>> b = a[:]
这个reference assignment比较蛋疼的一点是,如果把一个object传递到函数里面,也会改变函数外面这个object的值。


7. equal是相等,identical是指向同一片内存
equal操作符:==,identical操作符:is


8. 排序
使用sorted()函数,或者lst.sort()
sort()函数还可以接受comparator


第二部分:
1. tuple
tup = (1, 2, 3, 2, 1)


2. tuple和list类似,但是tuple是immutable的数据结构,凡是list拥有的不会改变元素值的操作,tuple也可以用


3. tuple最主要的作用是:如果一个函数想返回两个或者更多值的时候,可以用它


第三部分:
1. String
string的操作也有蛮多的:s.count(sub), s.find(sub), s.index(sub), s.split(), s.replace(old, new), etc.


第五章:
0. dictionary
字典其实就是一个associative array


1. 基本操作:
dct = {}
dct['age'] = 27
print dct.get('age')
del dct['age']
info = {'name':'robin jones', 'age':35, 'weight':203}

2.函数:
len(d)
d[k] 
d[k] = v
del d[k]
d.has_key(k)
d.items() # return (key, value) pairs
d.keys()
d.values()
d.get(k)
d.get(k, v) # 这个有意思,如果k不存在返回v


3. 简单的练习:
def main():
    dct = {}
    word = raw_input()
    while word != 'quit':
        count = dct.get(word, 0)
        dct[word] = count + 1
        word = raw_input()
    # print the word and freq
    for word in dct:
        print word + ' occurs ' + str(dct[word]) + ' times'

main()

4. 复制dictionary对象使用dict.copy(),不然又两个指针指向同一块内存了


5. persistent variables
可以使用shelve模块来存取永久数据,shelve模块用起来像一个字典对象:
import shelve
data = shelve.open("information") # open a file
data['name'] = 'fred smith' # put info into shelve
print data['name'] # get info out of shelve
data.close()


第六章:
0. Files,太感动,完全不需要处理各种异常(虽然有try...except代码块)!


1. 操作:
f = open("filename")
f = open("filename", "w")
f.read() # return a single character value
f.read(n) # return no more than n character values
f.readline() # return a line
f.readlines() # return all the file as a list
f.write(s)
f.writelines(lst)
f.close()


2. 从url中读取数据:
import urllib
remotefile = urllib.urlopen("http://www.python.org")
line = remotefile.readline()
while line:
	print line
	line = remotefile.readline()


第七章:
0. class的声明:
class BankAccount(object):
	def __init__ (self):
		self.balance = 0
	def deposit (self, amount):
		self.balance += amount
	def withdraw (self, amount):
		if self.balance < amount:
			raise ValueError, "insufficient funds"
		self.balance -= amount
	def getBalance (self):
		return self.balance
	def transfer (self, amount, toAccount):
		self.withdraw(amount)
		toAccount.deposit(amount)
	def __str__ (self):
		return 'Bank Account Object, balance = ' + self.balance


1. __init__是constructor,这里面的代码有些添加成员变量的意味
__str__类似于java的toString方法
__name__, __main__这些都是内部变量,系统不希望程序猿在一般情况下使用它们


2. python里面的成员变量都是public的,扯啊...


3. 写类的方法的时候记得把self这个成员变量也写进参数里面


4. 继承:
class CheckingAccount (BankAccount):


############ test case ################

最后给出一个test case的例子,好像书里面没有提到,但是上课还有project都要求使用,截取代码片段:

from createDb import *
import unitest


class TestMovieDb(unitest.TestCase):
	def setUp(self):
		self.movieInfo = {}
		createDb()


	def testCapStr(self):
		self.assertEqual('Tom Cruise', capStr('tOm cRuiSE'))

Python爬虫笔记python基础知识,以TXT文件呈现 一、概述 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。 龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。 那Python适合开发哪些类型的应用呢? 首选是网络应用,括网站、后台服务等等; - PythonWeb 其次是许多日常需要的小工具,括系统管理员需要的脚本任务等等; - Python 另外就是把其他语言开发的程序再装起来,方便使用。 - 胶水语言 在 爬虫 科学计算 等领域有独特优势 AI Python的优点 简单易学 完善的语言特性 天然开源 丰富的社区支持 Python的缺点。 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。 但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。 第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。 二、安装配置 安装下载地址: http://www.python.org/download/ Python目前分为两大版本,互不兼容: 2.x.x 3.x.x 下载的时候要注意区分 根据需要的版本进行下载 目前两者都有所使用 双击安装 设置环境变量: 将python安装位置配置到PATH环境变量下。 三、运行方式 shell方式: 在cmd窗口中输入python进入命令行模式 在其中以交互式方式执行 shell方式调用py文件: 在文件中编写Python脚本 文件后缀为.py 进入该文件所在目录 直接执行./xxx.py IDE模式: pycharm pyDev for Eclipse **Python编码 Python默认读取py文件时采用的编码格式是 ASCII 格式,如果文件不是该格式很可能出现乱码问题造成异常。 解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 来通知Python解释器在读取文件时采用的编码集 四、标识符 在 Python 中,所有标识符可以括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的。 以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入; 以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。 五、语言细节 1.语句 Python通常一行为一条语句 不需要分号标识 Python 可以同一行显示多条语句,方法是用分号 ; 案例: print 'hello';print 'runoob'; 也可以使用反斜杠将一行语句分为多行解释: 案例: total = item_one + \.....................................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值