1、写第一个 python 脚本工作中有些脚本是用 python 写的,这些脚本都十分实用,所以也想了解一下这种脚本的基本语法。第一次看 python 脚本代码时,感觉它的语法与 javascript 有些类似,用来写web 脚本也十分不错,事实上,他的设计者也在 google 就职。python 也被许多程序员作为首选,想来应该十分广泛和有用。这里把自己学习写的第一个程序的体会分享给大家,希望对想学习python 的网友们,或许有些帮助。本程序功能是用来估算集成螺旋电感的电感值,其中提供了三个估算公式:wheeler, mohan, monomial。并且分别显示了三个形式的电感:方形,六边形,
2、八边形电感。程序原形来自于 www-smirc.stanford.edu,公式可以参考 Mohan etc, “Simple Accurate ExpressionsPlanar Spiral Inductances“ 。python 最独特的地方就是采用了缩进的方式,不像其他程序采用括号来标识块的开始与结束。“#” 用来作为注释的标识。import 用来调用功能模块。比如常用的 sys,os,string 等,使用如:import stringimport sys或者import strng,sys也可如:from string import split比如想使用 split 这个函数,如果
3、使用 import string,就要使用string.split()的形式。如果用 from string import split,就要使用 split()来应用。此外,import 来可以调用自定义类,比如在 test.py 文件中创建类,就可以用import test 来调用文件中的类。def 用来定义自定义函数,函数主体语句都必须缩进到 def 位置里面,使用return 可以返回结果,分号用来转折,比如,使用 if,应为:if ab:print aelse:print belif a0:print a “bigger than 0“又比如,使用 try,except 也是一样,它的
4、功能类似 if,else。程序使用 try 读取输入参数,否则就退出。global 定义全局变量,这样其他地方也能使用这些变量。对于计算,比如我想精确小数点后三位,使用 round(0.11122*1000)/1000 在windows 中的 cygwin 中测试没有问题,但在 Linux 或 unix 中就不行,这与系统存储浮点而有所不同。所以本程序采用先打印成字符串,再转换成浮点类型即可。其中%x 对应“%.“,这类似其他语言 printf 的格式。如果打印多个变量使用:print “a=%d b=%.3f c=%s“ %(1 ,0.1111, a)对于字符串,可以使用单引号或双引号,比如
5、:abc“abc“abc也可以使用方括号定义 list,如:a,b,csys.argv得到参数,getopt 使用规则以帮助分离各个参数。因为getopt.getopt 分离的都是两个数值,所以用 opts,args= . 来方式。好了,这些差不多就可以开始写些简单的程序了,试着写吧,不要再买厚厚的参考书或读几百页的电子档了。indc.py 原代码下载我第一回体验 Python 是用这种脚本编程语言定制 Mailman,这是一种邮件列表管理软件包。最初我 对 Python 那些严格的语法规则和空格排版可真是厌烦透了。但日子一长,编写的代码一多,原来 Python 脚本的语法其实够简单的,特别容
6、易懂。 Python 真是一种功能强大的工具,每一位开放源代码程序员都应该熟悉和掌握它。Python 是什么?Python 是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度。它可以用来开发各种程序,从简单的脚本任务到复杂的、面 向对象的应用程序都有大显身手的地方。Python 还被当作一种入门程序员最适合掌握的优秀语言,因为它免费、面向对象、扩展性强同时执行严格的编码标 准。Python 是免费的Guido van Rossum 于 1990 年开始开发 Python,最初的目的无非是一个自娱的项目。作为 Monty Python 的飞行马戏团节目的爱好者,他给自己
7、开发的这种编程语言起了现在这个古怪的名字,中文意思就是大蟒。Python 最初设计为一种取代 Amoeba 分布式操作系统ABC 的脚本语言,但不久这种新型编程语言很快就发展成可以解决相当多问题的利器,现在更引入到了多种平台。Guido 目前还是 Python 软件基金会的主席。该组织按照 GNU 公共许可协议的要求拥有 Python 的知识产权和许可权。Python 可以用在多种平台上,包括 Windows、Macintosh和各种常见的 UNIX 系统。另外针对 PalmOS 和微软的 Pocket PC 的相应版本也在开发中。Python 品质超群虽然 Python 常用来创建简单的脚本
8、,但它采用的编程技术可不简单,比如面向对象编码、套接字、线程和 GUI 等等。假如你是一位刚入流的程序员,这些特性显然对你太有帮助了,因为你可以很快熟悉有益的编程语法和编码实践,之后再学习其他语言,比如 Java或者 C+等引入的技术概念就容易多了。脚本可以单独执行,不过,你还可以通过类文件和各类对象类型以充分利用这种语言的强大功能。Python 区别于其他面向对象语言的关键有两点。首先,Python 强调空格和编码结构,从而令开发者的代码具有良好的重用性。其次,执行脚本之前无须编译 Python 代码,这就是它为什么被当作脚本语言的原因。Python 易于扩展Python 语言有一个引人注目
9、的优势,它可以针对语言无法完成功能的函数调用函数库。Python 还具有有些相当有用的工具帮助开发出复杂的应用程序。其中最常用的就是Tkinker,这种工具可以实现跨平台的 GUI 开发。另一种 wxPython 工具则是对 wxWindows跨平台 C+框 架的扩展。WxPython 目前已经支持 Windows 和 Linux 平台。Python Imaging Library 可以让 Python 创建、打开、编辑和修改图象,包括 .gif、.jpeg 和.png 等。为了了解常用的 Python 扩展和应用,你不妨访 问下 The Vaults of Parnassus。Python
10、自身还可以嵌入到其他编程语言中。最常见的就是url=http:/www.jython.org/Jythonurl,这是一种用 Java 编写的 Python 解释器。这样你就可以同时利用两种语言的优点。你还可以在强大的 Java 应用程序框架中结合 Python 清晰的语法来创建出依赖于两种语言库的应用程序。编码标准严格的 Python 语法是初级程序员忽略这一强大编程语言的最主要原因。和大多数的其他面向 Web 脚本语言不同的是,Python 的空白排版不依赖于括 号或者分号来表示语句结束,换行和占位符用来描述代码的可视结果。这种编程方式乍看之下令人感到厌烦,但却对你另有莫大的好处,这就是代
11、码的可靠性。 Python 这种结构化是建立在下面的理论之上:开发者的工作时间机构财产中最有价值的财富。一旦你习惯了编写 Python 代码的规则。实际上你就习惯了 一种内建的编码标准。这也正是大多数 Python 开发者所依赖的标准。获取 Python你可以从 http:/www.python.org 或者各类平台上的 Python 版本。ActiveState 网站也发布用于 Windows、Linux 和 Solaris 等平台的 Python 库。最简单的 Python 代码下面我们举例说明 Python。假设你目前使用的是 Windows 系统,而且已经安装了Python,请首先启动
12、 IDLE,也就是 Python 的 GUI。现在处于 Python Shell 中(如果你在UNIX 类型的系统上就需要键入 python 类型指示你的 Python 可执行文件) 。接着在“”提示符下键入:print “Hello World”这个大家耳熟能详的程序就在屏幕上显示出结果,你还可以如下所示给变量赋值:myvar = 42print myvar在上例中会显示结果 42。如果你开发的脚本无须在 Python Shell 中直接输入 Python 就更有用了。程序清单 A 就包含了一个 Hello World 脚本的示例,其中编写了 if-else 语句。你可以在命令行上键入 sc
13、riptname.py 来执行自己的脚本( py 是 Python 脚本的标准文件扩展名) 。你应该能看到正确的显示结果。清单 A 中,跟着 if 和 else 之后由占位符缩排的语句就是空白格式化的一部分。这些很简单的示例演示了 Python 清晰的语法。为了了解更多有关 Python 编程的信息,你不妨查看下 Python 网站上的初学者指南。如果你不习惯 于上网浏览,那么你还可以阅读 OReilly 和 New Riders 出版的有关图书。比如 How to Think Like a Computer Scientist : Learning with Python 和 Python
14、Essential Reference。小结不论你是一位初学编程语言以图增长自己知识技能的入门程序员还是为了谋取更大代码可靠性的 Perl 高手,你都会发现 Python 是一种相当灵活和强大的编程语言。它可以开发出各种各样的应用程序,从功能齐备的邮件列表软件到各种跨平台的 GUI 应用程序一应俱全。http:/ Java 编程经验的程序员快速熟悉 Python 本文程序在 windows xp+python3.1a1 测试通过. 本文提到的 idle 指 python shell,即安装 python 后你在菜单看到的IDLE(python gui) 在 idle 里 ctrl+n 可以打开
15、一个新窗口,输入源码后 ctrl+s 可以保存,f5 运行程序. 凡打开新窗口即指 ctrl+n 的操作. 1 你好 复制代码 代码如下:#打开新窗口,输入: #! /usr/bin/python # -*- coding: utf8 -*- s1=input(“Input your name:“) print(“你好,%s“ % s1) 知识点: * input(“某字符串“)函数:显示“某字符串“,并等待用户输入. * print()函数:如何打印. * 如何应用中文 * 如何用多行注释 2 字符串和数字 但有趣的是,在 javascript 里我们会理想当然的将字符串和数字连接,因为是动
16、态语言嘛.但在 Python 里有点诡异,如下: 复制代码 代码如下:#! /usr/bin/python a=2 b=“test“ c=a+b 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 复制代码 代码如下:#! /usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 a=2 b=“test“ c=str(a)+b d=“1111“ e=a+int(d) #How to print multiply values print (“c is %s,e is %i“ % (c,e) 知识点: * 用 int 和
17、 str 函数将字符串和数字进行转换 * 打印以#开头,而不是习惯的/ * 打印多个参数的方式 3 列表 复制代码 代码如下:#! /usr/bin/python # -*- coding: utf8 -*- #列表类似 Javascript 的数组,方便易用 #定义元组 word=a,b,c,d,e,f,g #如何通过索引访问元组里的元素 a=word2 print (“a is: “+a) b=word1:3 print (“b is: “) print (b) # index 1 and 2 elements of word. c=word:2 print (“c is: “) prin
18、t (c) # index 0 and 1 elements of word. d=word0: print (“d is: “) print (d) # All elements of word. #元组可以合并 e=word:2+word2: print (“e is: “) print (e) # All elements of word. f=word-1 print (“f is: “) print (f) # The last elements of word. g=word-4:-2 print (“g is: “) print (g) # index 3 and 4 eleme
19、nts of word. h=word-2: print (“h is: “) print (h) # The last two elements. i=word:-2 print (“i is: “) print (i) # Everything except the last two characters l=len(word) print (“Length of word is: “+ str(l) print (“Adds new element“) word.append(h) print (word) #删除元素 del word0 print (word) del word1:3
20、 print (word) 知识点: * 列表长度是动态的,可任意添加删除元素. * 用索引可以很方便访问元素,甚至返回一个子列表 * 更多方法请参考 Python 的文档 4 字典 复制代码 代码如下:#! /usr/bin/python x=a:aaa,b:bbb,c:12 print (xa) print (xb) print (xc) for key in x: print (“Key is %s and value is %s“ % (key,xkey) 知识点: * 将他当 Java 的 Map 来用即可. 5 字符串 比起 C/C+,Python 处理字符串的方式实在太让人感动了
21、.把字符串当列表来用吧. 复制代码 代码如下:#! /usr/bin/python word=“abcdefg“ a=word2 print (“a is: “+a) b=word1:3 print (“b is: “+b) # index 1 and 2 elements of word. c=word:2 print (“c is: “+c) # index 0 and 1 elements of word. d=word0: print (“d is: “+d) # All elements of word. e=word:2+word2: print (“e is: “+e) # Al
22、l elements of word. f=word-1 print (“f is: “+f) # The last elements of word. g=word-4:-2 print (“g is: “+g) # index 3 and 4 elements of word. h=word-2: print (“h is: “+h) # The last two elements. i=word:-2 print (“i is: “+i) # Everything except the last two characters l=len(word) print (“Length of w
23、ord is: “+ str(l) 中文和英文的字符串长度是否一样? 复制代码 代码如下:#! /usr/bin/python # -*- coding: utf8 -*- s=input(“输入你的中文名,按回车继续“); print (“你的名字是 : “ +s) l=len(s) print (“你中文名字的长度是:“+str(l) 知识点: 类似 Java,在 python3 里所有字符串都是 unicode,所以长度一致. 6 条件和循环语句 复制代码 代码如下:#! /usr/bin/python #条件和循环语句 x=int(input(“Please enter an inte
24、ger:“) if x0: x=0 print (“Negative changed to zero“) elif x=0: print (“Zero“) else: print (“More“) # Loops List a = cat, window, defenestrate for x in a: print (x, len(x) #知识点: # * 条件和循环语句 # * 如何得到控制台输入 7 函数 复制代码 代码如下:#! /usr/bin/python # -*- coding: utf8 -*- def sum(a,b): return a+b func = sum r =
25、func(5,6) print (r) # 提供默认值 def add(a,b=2): return a+b r=add(1) print (r) r=add(1,5) print (r) 一个好用的函数 #! /usr/bin/python # -*- coding: utf8 -*- # The range() function a =range (1,10) for i in a: print (i) a = range(-2,-11,-3) # The 3rd parameter stands for step for i in a: print (i) 知识点: Python 不用来
26、控制程序结构,他强迫你用缩进来写程序,使代码清晰. 定义函数方便简单 方便好用的 range 函数 8 异常处理 复制代码 代码如下:#! /usr/bin/python s=input(“Input your age:“) if s =“: raise Exception(“Input must no be empty.“) try: i=int(s) except Exception as err: print(err) finally: # Clean up action print(“Goodbye!“) 9 文件处理 对比 Java,python 的文本处理再次让人感动 复制代码 代
27、码如下:#! /usr/bin/python spath=“D:/download/baa.txt“ f=open(spath,“w“) # Opens file for writing.Creates this file doesnt exist. f.write(“First line 1.n“) f.writelines(“First line 2.“) f.close() f=open(spath,“r“) # Opens file for reading for line in f: print(“每一行的数据是:%s“%line) f.close() 知识点: open 的参数:r
28、 表示读,w 写数据,在写之前先清空文件内容,a 打开并附加内容. 打开文件之后记得关闭 10 类和继承 复制代码 代码如下:class Base: def _init_(self): self.data = def add(self, x): self.data.append(x) def addtwice(self, x): self.add(x) self.add(x) # Child extends Base class Child(Base): def plus(self,a,b): return a+b oChild =Child() oChild.add(“str1“) prin
29、t (oChild.data) print (oChild.plus(2,3) 知识点: * self:类似 Java 的 this 参数 11 包机制 每一个.py 文件称为一个 module,module 之间可以互相导入.请参看以下例子: 复制代码 代码如下:# a.py def add_func(a,b): return a+b # b.py from a import add_func # Also can be : import a print (“Import add_func from module a“) print (“Result of 1 plus 2 is: “) p
30、rint (add_func(1,2) # If using “import a“ , then here should be “a.add_func“ module 可以定义在包里面.Python 定义包的方式稍微有点古怪,假设我们有一个 parent 文件夹,该文件夹有一个 child 子文件夹.child 中有一个 module a.py . 如何让 Python 知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.这个层次结构如下所示: parent -_init_.py -child - _init_.py -a.py b.py 那么 P
31、ython 如何找到我们定义的 module?在标准包 sys 中,path 属性记录了Python 的包路径.你可以将之打印出来: import sys print(sys.path) 通常我们可以将 module 的包路径放到环境变量 PYTHONPATH 中,该环境变量会自动添加到 sys.path 属性.另一种方便的方法是编程中直接指定我们的 module 路径到 sys.path 中: 复制代码 代码如下:import sys import os sys.path.append(os.getcwd()+parentchild) print(sys.path) from a impor
32、t add_func print (sys.path) print (“Import add_func from module a“) print (“Result of 1 plus 2 is: “) print (add_func(1,2) 知识点: 如何定义模块和包 如何将模块路径添加到系统路径,以便 python 找到它们 如何得到当前路径 12 内建帮助手册 对比 C+,Java 的突出进步是内建 Javadoc 机制,程序员可以通过阅读 Javadoc了解函数用法.Python 也内建了一些方便函数以便程序员参考. dir 函数: 查看某个类/对象的方法. 如果有某个方法想不起来,请敲 dir. 在idle 里,试试 dir(list) help 函数: 详细的类/对象介绍. 在 idle 里, 试试 help(list)