首页 > 程序开发 > Web开发 > Python >

《简明Python教程》学习笔记

2013-07-11

简明python教程网址:http://www.2cto.com/shouce/pythonjc/index.htmlhelp(sys)help(int)help(list)help(dict)help(str)help(file)sys模块print sys.__doc__help(sys.exit)help(sys.stdin)help(sys.stdout)hel...

简明python教程网址:http://www.2cto.com/shouce/pythonjc/index.html
help(sys)
help(int)
help(list)
help(dict)
help(str)
help(file)
sys模块
print sys.__doc__
help(sys.exit)
help(sys.stdin)
help(sys.stdout)
help(sys.stderr)
1.
运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 + 3 + 4被计算成(2 + 3) + 4。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c被处理为a = (b = c)。
2.
-25.5%2.25=1.5
3.
**是幂运算,布尔(not、or、and)逻辑(&,|,^,~)
4.
输出变量
area = 5
print 'Area is', area
Area is 5[自动输出1个空格]
5.
if condintion1:
func1
elif condition2:
func2
else :
func3
注意:if语句在结尾处包含一个冒号——我们通过它告诉Python下面跟着一个语句块。
6.
guess = int(raw_input('Enter an integer:'))
我们为内建的raw_input函数提供一个字符串,这个字符串被打印在屏幕上,然后等待用户的输入。一旦我们输入一些东西,然后按回车键之后,函数返回输入。对于raw_input函数来说是一个字符串。我们通过int把这个字符串转换为整数,并把它存储在变量guess中。
7.
True、False、None首字母不能小写。
8.
#while
while condtion1:
func1
else:
func2
#for
for i in range(1,5):
func1
else:
func2
注意:
else从句可有可无
注释用#
9.
range(begin,end,step)
range 以step为步长,延伸到end,但它不包含end。
10.
【Python的for循环更加简单、明白、不易出错。】
在C/C++中,如果你想要写for (int i = 0; i < 5; i++),那么用Python,你写成for i in range(0,5)。
11.
def sayHello():
print &#39;Hello world!&#39;
sayHello()
12.
global x,y,z
13.
print &#39;zhanghe&#39;*5
14.
如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作 关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
func(50,c=100)
先按照关键参数、在按照顺序
15.
除非你提供你自己的return语句,每个函数都在结尾暗含有return None语句。
16.
pass语句在Python中表示一个空的语句块。
17.
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。
18.
每个Python模块都有它的__name__,如果它是&#39;__main__&#39;,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。
19.
使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。
>>> import sys
>>> dir(sys) # get list of attributes for sys module
>>> dir() # get list of attributes for current module
>>> a = 5 # create a new variable &#39;a&#39;
>>> dir()
>>> del a # delete/remove a name
>>> dir()
20.
列表
#Filename:using_list.py
shoplist = [&#39;apple&#39;,&#39;mango&#39;,&#39;carrot&#39;,&#39;banana&#39;]
print &#39;I hava&#39;,len(shoplist),&#39;items to purchase.&#39;
print &#39;These items are:&#39;,#Notice that comma at end of the line
for item in shoplist:
print item,
#These items are: apple mango carrot banana
print &#39;\nI also have to buy rice.&#39;
shoplist.append(&#39;rice&#39;)
print &#39;My shopping list is now&#39;,shoplist
#My shopping list is now [&#39;apple&#39;, &#39;mango&#39;, &#39;carrot&#39;, &#39;banana&#39;, &#39;rice&#39;]
print &#39;I will sort my list now&#39;
shoplist.sort()
print &#39;Sorted shopping list is&#39;,shoplist
print &#39;The first item I will buy is&#39;,shoplist[0]
olditem = shoplist[0]
del shoplist[0]
print &#39;I bought the&#39;,olditem
print &#39;My shopping list is now&#39;,shoplist
21.
我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符。
22.
元组
元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组。
#Filename:using_tuple.py
zoo = (&#39;wolf&#39;,&#39;elephant&#39;,&#39;penguin&#39;)
print &#39;Number of animals in the zoo is&#39;,len(zoo)
new_zoo = (&#39;monkey&#39;,&#39;dolphin&#39;,zoo)
print &#39;Number of animals in the new zoo is&#39;,len(new_zoo)
print &#39;All animals in new zoo are&#39;,new_zoo
print &#39;Animals brought from old zoo are&#39;,new_zoo[2]
print &#39;Last animal brought from old zoo is&#39;,new_zoo[2][2]
output:
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are (&#39;monkey&#39;, &#39;dolphin&#39;, (&#39;wolf&#39;, &#39;elephant&#39;, &#39;penguin&#39;))
Animals brought from old zoo are (&#39;wolf&#39;, &#39;elephant&#39;, &#39;penguin&#39;)
Last animal brought from old zoo is penguin
如果你想要的是一个包含项目2的元组的时候,你必须在第一个(唯一一个)项目后跟一个逗号,你应该指明singleton = (2 , )。
23.
元组最通常的用法是用在打印语句中
age = 22
name = &#39;Swaroop&#39;
print &#39;%s is %d years old&#39; % (name, age)
print &#39;Why is %s playing with that python?&#39; % name
24.
字典
字典是dict类的实例/对象
键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。
记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。
#Filename:using_dict.py
#&#39;ab&#39; is short for &#39;a&#39;ddress &#39;b&#39;ook
ab={ &#39;Swaroop&#39; : &#39;swaroopch@byteofpython.info&#39;,
&#39;Larry&#39; : &#39;larry@eall.org&#39;,
&#39;Matsumoto&#39; : &#39;matz@ruby-lang.org&#39;,
&#39;Spammer&#39; : &#39;spammer@hotmail.com&#39; #The last para has no &#39;,&#39;
}
print "Swaroop&#39;s address is %s" % ab[&#39;Swaroop&#39;]
#Adding a key/value pair
ab[&#39;Guido&#39;] = &#39;guido@python.org&#39;
#Deleting a key/value pair
del ab[&#39;Spammer&#39;]
print &#39;\nThere are %d contacts in the address-book\n&#39;%len(ab)
for name,address in ab.items():
print &#39;Contact %s at %s&#39;%(name,address)
if &#39;Guido&#39; in ab:#OR ab.has_key(&#39;Guido&#39;)
print "\nGuido&#39;s address is %s"%ab[&#39;Guido&#39;]
25.
序列
列表、元组和字符串都是序列,但是序列是什么,它们为什么如此特别呢?序列的两个主要特点是索引操作符和切片操作符。
序列的神奇之处在于你可以用相同的方法访问元组、列表和字符串。
# Filename: seq.py
shoplist = [&#39;apple&#39;, &#39;mango&#39;, &#39;carrot&#39;, &#39;banana&#39;]
# Indexing or &#39;Subscription&#39; operation
print &#39;Item 0 is&#39;, shoplist[0]
print &#39;Item 1 is&#39;, shoplist[1]
print &#39;Item 2 is&#39;, shoplist[2]
print &#39;Item 3 is&#39;, shoplist[3]
print &#39;Item -1 is&#39;, shoplist[-1]
print &#39;Item -2 is&#39;, shoplist[-2]
# Slicing on a list
print &#39;Item 1 to 3 is&#39;, shoplist[1:3]
print &#39;Item 2 to end is&#39;, shoplist[2:]
print &#39;Item 1 to -1 is&#39;, shoplist[1:-1]【notice that】
print &#39;Item start to end is&#39;, shoplist[:]【notice that】
# Slicing on a string
name = &#39;swaroop&#39;
print &#39;characters 1 to 3 is&#39;, name[1:3]
print &#39;characters 2 to end is&#39;, name[2:]
print &#39;characters 1 to -1 is&#39;, name[1:-1]
print &#39;characters start to end is&#39;, name[:]
output:
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is [&#39;mango&#39;, &#39;carrot&#39;]
Item 2 to end is [&#39;carrot&#39;, &#39;banana&#39;]
Item 1 to -1 is [&#39;mango&#39;, &#39;carrot&#39;]【notice that】
Item start to end is [&#39;apple&#39;, &#39;mango&#39;, &#39;carrot&#39;, &#39;banana&#39;]【notice that】
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
26.
参考
当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。
#Filename:reference.py
print &#39;Simple Assignment&#39;
shoplist = [&#39;apple&#39;,&#39;mango&#39;,&#39;carrot&#39;,&#39;banana&#39;]
mylist = shoplist #mylist is just another name pointing to the same object
del shoplist[0]
print &#39;shoplist is&#39;,shoplist
print &#39;mylist is&#39;,mylist
# notice that both shoplist and mylist both print the same list without
# the &#39;apple&#39; confirming that they point to the same object
print &#39;Copy by making a full slice&#39;
mylist = shoplist[:]# make a copy by doing a full slice
del mylist[0]
print &#39;shoplist is&#39;,shoplist
print &#39;mylist is&#39;,mylist
# notice that now the two lists are different
27.
字符串str类
#!/usr/bin/python
#Filename:str_methods.py
name = &#39;Swaroop&#39; #This is a string object
if name.startswith(&#39;Swa&#39;):
print &#39;This string starts with "Swa"&#39;
if &#39;a&#39; in name:
print &#39;This string contains the string "a"&#39;
if name.find(&#39;war&#39;) != -1:
print &#39;This string contains the string "war"&#39;
delimiter = &#39;_*_&#39;
mylist = [&#39;Brazil&#39;, &#39;Russia&#39;, &#39;India&#39;, &#39;China&#39;]
print delimiter.join(mylist)
28.
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。
29
__init__
__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。
30.
类与对象的变量
有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。
类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。
对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。
#Filename:objvar.py
class Person:
&#39;&#39;&#39;Represents a person.&#39;&#39;&#39;
population = 0
def __init__(self, name):
&#39;&#39;&#39;Initializes the person&#39;s data.&#39;&#39;&#39;
self.name = name
print &#39;(Initializing %s)&#39;%self.name
#When this person is created, he/she
#adds to the population
Person.population += 1
def __del__(self):
&#39;&#39;&#39;I am dying&#39;&#39;&#39;
print &#39;%s says bye.&#39;%self.name
Person.population -= 1
if Person.population == 0:
print &#39;I am the last one&#39;
else :
print &#39;There are still %d people left.&#39;%Person.population
def sayHi(self):
&#39;&#39;&#39;Greeting by the person.
Really,that&#39;s all it does.&#39;&#39;&#39;
print &#39;hi,my name is %s.&#39;%self.name
def howMany(self):
&#39;&#39;&#39;Prints the current population.&#39;&#39;&#39;
if Person.population == 1:
print &#39;I am the only person here.&#39;
else:
print &#39;We have %d persons here.&#39;%Person.population
swaroop = Person(&#39;Swaroop&#39;)
swaroop.sayHi()
swaroop.howMany()
kalam = Person(&#39;Abdul Kalam&#39;)
kalam.sayHi()
kalam.howMany()
swaroop.sayHi()
swaroop.howMany()
kalam.__del__()
swaroop.__del__()
31.
Python要求:
Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。
只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
公共惯例:
如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。
32.
一个子类型在任何需要父类型的场合可以被替换成父类型,即对象可以被视作是父类的实例,这种现象被称为多态现象。
33.
Python不会自动调用基本类的constructor,你得亲自专门调用它。
我们调用了子类型的tell方法,而不是SchoolMember类的tell方法。可以这样来理解,Python总是首先查找对应类型的方法,在这个例子中就是如此。如果它不能在导出类中找到对应的方法,它才开始到基本类中逐个查找。
34.
Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。
还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍)。你可以使用它们中的任一个,而我们在这里将使用cPickle模块。记住,我们把这两个模块都简称为pickle模块。
dump()储存
load()取储存
35.
处理异常
我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
对于每个try从句,至少都有一个相关联的except从句。
你还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。
36.
引发异常
你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。
37.
try..finally
假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。
import time
time.sleep(2)
38.
在程序运行的时候,按Ctrl-c中断/取消程序。
39.
sys模块
40.
os模块
这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符。
>>> import os
>>> str = &#39;Path&#39;
>>> print os.getenv(str)
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;E:\Java\jdk1.6.0_21\bin;C:\Python27;
下面列出了一些在os模块中比较有用的部分。它们中的大多数都简单明了。
os.name字符串指示你正在使用的平台。比如对于Windows,它是&#39;nt&#39;,而对于Linux/Unix用户,它是&#39;posix&#39;。
os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
os.listdir()返回指定目录下的所有文件和目录名。
os.remove()函数用来删除一个文件。
os.system()函数用来运行shell命令。
os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用&#39;\r\n&#39;,Linux使用&#39;\n&#39;而Mac使用&#39;\r&#39;。
os.path.split()函数返回一个路径的目录名和文件名。
os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()函数用来检验给出的路径是否真地存在。
41.
特殊方法:
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。
42.
单语句块:[butuijianshiyong
if True: print &#39;Yes&#39;
43.
列表综合
通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理想的方法。
44.
在函数中接收元组和列表
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
变量前有*前缀,所有多余的函数参数都会作为一个元组
变量前有**前缀,所有多余的函数参数都会作为一个字典的键/值对。
45.
lambda形式
lambda语句被用来创建新的函数对象,并且在运行时返回它们。
lambda需要一个参数,后面仅跟【单个表达式】作为函数体,而表达式的值被这个新建的函数返回。
46.
exec语句
exec语句用来执行储存在字符串或文件中的Python语句。
exec &#39;print "Hello World"&#39;
eval语句
eval语句用来计算存储在字符串中的有效Python表达式。
eval(&#39;2*3&#39;)
assert语句
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。
repr函数
repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。
repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
>>> i = []
>>> i.append(&#39;item&#39;)
>>> `i`
"[&#39;item&#39;]"
>>> repr(i)
"[&#39;item&#39;]"
【QQ:1203456195】【博客地址:http://www.cnblogs.com/CheeseZH】
相关文章
最新文章
热点推荐