1. Python中的错误检测
前面已经知道了input()和raw_input()的用法了,input()会在接收了“字符串”的输入之后进行一些处理,比如你是输入1+2,然后输出的就是3了,而raw_input就是原原本本的1+2的输出了。
print input()输入英文字母shiyuezhong之后就会出现异常:
Traceback (most recent call last): File "F:/Python27/1", line 1, in <module> print input() File "<string>", line 1, in <module> NameError: name 'shiyuezhong' is not defined
现在要做的就是捕捉这种由用户输入引起的错误。这么来做:
try: print input() except: print 'there is an error in your input'
这下你无论怎么输入都不会有什么其他的提示了,就是自己设定的print语句作为提示。 现在把try except的组合去掉,回到print input()你再尝试一下:
1/0 这个显然是一个错误,被零除的错误。那么专门来捕捉一下这个错误:
try: print input() except ZeroDivisionError: print 'can not be divided by zero'
所以最终的代码如下:
try: print input() except ZeroDivisionError: print 'can not be divided by zero' except: print 'there is an error in your input'
捕捉所有错误的except必须放在所有的except的最后一位。
2. 函数的使用
def square(x): return x**2 print square(7)
def表示这个开始定义一个函数,x是参数,参数是不需要类型的,因为python是不需要明确指出类型的。return是返回值,返回的值插入到调用函数的地方。
def swap(a, b): return (b,a) print swap(1,2)
这里返回的并不是两个值,而是一个值。 (b, a)就是一个元组(turple),你可以用这样的方式成生一个元组,并使用它。元组是基本的变量类型:
my_turple = (1, 2, 3) my_list = [] for i in my_turple: my_list.append(i) print my_list
元组和列表非常像,但是列表的长度是可以变化的,而且成员是可以改变的。但是元组是什么都不能变的,是只读的。
3. 文件的操作
首先是建立关联...假设在存在以下文件 c:\a.txt 里面内容为:
This is line #1
This is line #2
This is line #3
END
代码:
>>> xxx = file('c:\\a.txt', 'r') >>> xxx_content = xxx.read() >>> print xxx_content This is line #1 This is line #2 This is line #3 END >>> xxx.close() >>> >>> infile = file('c:\\a.txt', 'r') >>> xxx = file('c:\\a.txt', 'r') >>> for xxx_line in xxx.readlines(): print 'Line:', xxx_line Line: This is line #1 Line: This is line #2 Line: This is line #3 Line: END >>> xxx.close() >>>
file里关键字的第一部分,是文件路径及名称。注意这里面,路径需要用\\
第二部分,是对文件的模式或者叫权限,一般有以下3种 "r" (read), "w" (write)和 "a"(append).
利用xxx_content = infile.read() 和 xxx_content = infile.readlines() 来读取文件内容。
然后是文件的写入:
>>> xxx=file('c:\\test.txt','w') >>> xxx.write('shiyuezhong') >>> xxx.write('testtest') >>> xxx.write('enter\n') >>> xxx.writelines([' shiyuezhong ','buding']) >>> xxx.close() >>> >>> xxx=file('c:\\test.txt','r') >>> content=xxx.read() >>> print content shiyuezhongtesttestenter shiyuezhongbuding >>>需要注意的是 ... 在 xxx.close()之前, c 盘下面只有一个空空的 test.txt , xxx.close() 的作用相当于最后的存盘。
4. 类的使用
class person: def __init__(self): self.name = 'taowen' self.id = 20022479 def say_id(self): print "%s's id is %d" % (self.name, self.id) me = person() me.say_id()
类:是class关键来定义的。class person:就是说定义一个类,名字叫person。
对象: 是用类来产生的。所以me就是对象,产生的办法就是像调用函数一样,person(),而且()中是能够放参数的,什么时候要参数,看下面的“初始化函数“。
初始化函数:类可以有自己的初始化函数,每次类被创建的时候(调用person()这样的语句的时候),都会调用它。__init__是必须的名字,不能用其他名字来当初始化函数。但是你可以没有初始化函数。
这里大致感觉和java差不多,所以就不多说明了。
5. python to exe
讲述如何将一个python源代码编译成一个exe。
1)下载安装py2exe 2.7版本的 http://download.csdn.net/detail/shiyuezhong/4588805
2)假设你写好了一个python程序 syz.py...存在了D:\Python27\下面
3)再写一个setup.py...也存在D:\Python27\下面...内容如下:
# setup.py from distutils.core import setup import py2exe setup(name="syz", scripts=["syz.py"],)
其中name和scripts是需要你到时候具体修改的,也可以这样setup(console=["syz.py"])
4)找到windows的dos模式(命令提示符)
D:\Python27>
D:\Python27>python setup.py py2exe
在你的D:\Python27就会出现两个文件夹build和dist,前面那个里面似乎是源程序,dist里面的就是编译好的.exe了。
6.图形界面
from Tkinter import * root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() button = Button(root) button['text'] = 'change it' button.pack() root.mainloop()
root是一个变量名称,其代表了这个主窗口。以后创建控件的时候指定控件创建在什么窗口之中,就要用这个root来表示了。而Tk()是一个 Tkinter库之中的函数(其实是类的构造函数,构造了一个对象)。而mainloop则是主窗口的成员函数,也就是表示让这个root工作起来,开始 接收鼠标的和键盘的操作。
root= Tk(className='bitunion') //修改窗口标题,也可以使用默认 root = Tk()
pack是和控件的布局排版有关系的,去掉就显示不出来了。
通过函数来进行事件处理:
from Tkinter import * def on_click(): label['text'] = 'no way out' root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() button = Button(root) button['text'] = 'change it' button['command'] = on_click button.pack() root.mainloop()
on_click中出现label这个变量比较奇怪,因为在on_click前面没有定义label这个变量,但是python在你写的时候根本就不用知道其是否存在,只是要在运行的时候找得到label就可以了。而运行的前后关系,是通过时间来关联的而不是代码上前 后行的关系。这里由于label = Label(root)先于on_click执行,所以当on_click执行的时候,label就是一个已经定义的变量。