Python学习笔记.docx

上传人:b****8 文档编号:10081651 上传时间:2023-05-23 格式:DOCX 页数:125 大小:107.07KB
下载 相关 举报
Python学习笔记.docx_第1页
第1页 / 共125页
Python学习笔记.docx_第2页
第2页 / 共125页
Python学习笔记.docx_第3页
第3页 / 共125页
Python学习笔记.docx_第4页
第4页 / 共125页
Python学习笔记.docx_第5页
第5页 / 共125页
Python学习笔记.docx_第6页
第6页 / 共125页
Python学习笔记.docx_第7页
第7页 / 共125页
Python学习笔记.docx_第8页
第8页 / 共125页
Python学习笔记.docx_第9页
第9页 / 共125页
Python学习笔记.docx_第10页
第10页 / 共125页
Python学习笔记.docx_第11页
第11页 / 共125页
Python学习笔记.docx_第12页
第12页 / 共125页
Python学习笔记.docx_第13页
第13页 / 共125页
Python学习笔记.docx_第14页
第14页 / 共125页
Python学习笔记.docx_第15页
第15页 / 共125页
Python学习笔记.docx_第16页
第16页 / 共125页
Python学习笔记.docx_第17页
第17页 / 共125页
Python学习笔记.docx_第18页
第18页 / 共125页
Python学习笔记.docx_第19页
第19页 / 共125页
Python学习笔记.docx_第20页
第20页 / 共125页
亲,该文档总共125页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Python学习笔记.docx

《Python学习笔记.docx》由会员分享,可在线阅读,更多相关《Python学习笔记.docx(125页珍藏版)》请在冰点文库上搜索。

Python学习笔记.docx

Python学习笔记

∙·简明Python教程--前言

∙·简明Python教程--介绍

∙·简明Python教程--安装Python

∙·简明Python教程--最初的步骤

∙·简明Python教程--基本概念

∙·简明Python教程--运算符与表达式

∙·简明Python教程--控制流

∙·简明Python教程--函数

∙·简明Python教程--模块

∙·简明Python教程--数据结构

∙·Python教程--编写Python脚本

∙·Python教程--面向对象的编程

∙·简明Python教程--输入/输出

∙·简明Python教程--异常

∙·简明Python教程--Python标准库

∙·简明Python教程--术语表

Pythonanygui项目预览

在Python世界中有一个非常有趣的[anygui]项目,它已经进入了早期的开发阶段。

[anygui]项目打算作为许多主要图形工具箱的下层API。

一旦完全开发成功,Python程序员就可以调用一个公共[anygui]函数―例如,为创建一个窗口―可由“最适当好用”的工具箱来完成这项工作。

在Windows上,可以使用到Win32API(或者wxWindows);在MacOS上,可能本机调用;在BeOS上,使用Bethon;在Linux上,使用TKinter或者GTK;在Telnet屏幕上使用ncurses―所有这些都取决于给定的机器上安装的和可用的软件。

本文讨论了[anygui]当前的开发状态,以及该项目要达到的目标。

  编写一次,到处显示!

  许多年前当Java刚出现时,它的一个重要承诺就是实现代码“编写一次,随处运行”的想法。

起先,主要考虑将Java用户界面作为applet,嵌入到Web浏览器中。

一段时间后,独立的AWT应用程序成为更流行的概念。

接下来,AWT通常被Swing所取代。

Swing又变成了Bean(构建在Swing上,但有另外的要求)。

这样依次下来,Swing类从Java版本中添加、删减,不断来回变化着。

  有关Java的一个很流行的笑话是,“编写一次,到处调试”。

至少可以确定的是,您不可能编写了一个Java应用程序后,非常自信地认为它可以运行在您应用程序的每个用户机器上―除非您愿意要求每个用户做相当多的工作来获取Java版本和配置,使它们完全符合您特定的应用程序。

应用程序是否运行取决于Java版本,以及甚至特定的供应商和安装Java虚拟机(JVM)的平台。

  就大多数方面而言,如Python、Perl和Tcl这样的脚本语言,要比Java具有更好的可移植性。

例如,对于大多数Python脚本,程序员感到十分自信的是,发送到多个用户的脚本在每台目标机器上都将正确和完全一致地运行(可能有最低版本的要求―这要比Java上的要求简单得多、可靠得多)。

当然,Java除了不完美的移植性外,它也有许多优势:

静态输入(许多人想要它)、庞大的类库、卓越的文档、细心的设计选择。

但是有关那些语言的注意事项并不是我在这里感兴趣的话题。

 Python脚本可移植性中有一个地方比Java差很多,那就是在用户界面中。

对于一个命令行工具,这一点不成问题。

但当您希望复杂的用户交互时―特别专门针对图形界面时―Python实际上什么也不能提供。

对于所有的小故障和小错误,Java通常确实为每个带JVM的平台提供了Swing和AWT这些基本的GUI。

相反,Python完全没有任何“标准”的GUI库。

  许多人都表示他们期望有标准的PythonGUI。

Tkinter恰在这时到来―它有Windows和UNIX/XWindow系统稳定的版本,并且有一个过得去的MacOS版本。

但您还需要在系统上安装TCL和TK,以及被忽略的“非主流”平台,如BeOS和OS/2。

各类倡导者建议,采用一些其它库/绑定将会是一个更好的选择(有许多库可以进行选择;请参阅参考资料)。

而每个库/绑定支持一个期望平台的子集;并且最重要的是,没有一个库/绑定被一致地接受(因此,没有一个成为标准而随Python分发版一起发行)。

我们无法编写带用户界面的应用程序,并且无法确保实际用户可以与它进行相互操作。

  重新考虑这个问题

  Java思想创建了每个JVM必须实现的能力的一个标准集合。

JavaGUI是根据规定而存在。

Python式的方法可能来自一个不同的角度。

不再命令每台机器遵从某个确定的API,取而代之的是,只是确定给定机器可以做什么,然后从那里开始工作。

API仅作为底层平台所完成工作的包装器。

  一旦以Python方式考虑问题时,anygui做了您确实希望做的事情。

从anydbm模块中取出它的名字和相关说明,在运行时找到“最适当可用”的数据库后端,anygui在自身应用程序正在运行的系统上会找到最适当可用的GUI后端。

anygui强调提供一个可以和每个后端一起工作的实用的界面元素集合;特定的后端可能自己能够提供更高级的界面,但anygui提供的是它们的公共的界面。

写本文的时候,anygui还是一个alpha级的项目。

对一个目标后端子集,anygui已经做得非常好。

但由于目标是建立一个(接近于)通用的包装器,只有一个子集在工作显然是不够的。

最终,如果anygui达到了它的目标,则在每个Python分发版中,anygui都将作为标准的Python包包含在其中,那才是有意义的(就如同不管什么依赖于系统的后端,Python分发版中都包括了anydbm或者xml.sax)。

毕竟,这一点才能确保每个用户都拥有了它。

顺便提一下,anygui是纯Python;它本身不需要C/C++或者其他较低级语言的任何东西(当然,如果有用,anygui应该找一些支持的GUI库)。

  台和图片

  为了写本文,我快速研究了大多数工作后端。

还有几个后端没有实现,或者只实现了部分功能。

已经实现的有Tkinter、JavaSwing、win32all、PyGTK和wxPython。

BeOS本机(带Bethon)只实现了部分功能,但可能每天都构建一次进行新的改进。

PyQT和MacOS本机已经编制了规划,并且已经进行了开发,还没有创建这些包装器的实现;当然,随着时间的推移,这些都可能发生变化。

关于直接的xlib后端,也一直有一些讨论,但目前没有人自愿负责这项工作。

  上面所有的图形工具箱以一种非常相似的方式工作,或将以一种非常相似的方式工作。

我承认我在大多数后端工具箱方面的知识很有限―但从我的理解,anyguiAPI在很大程度上与Tkinter相似。

本质上,这个策略是创建带回调的一串窗口小部件,然后进入一个主事件循环。

  将来还可能会有一些其它后端,它们会打破这个“标准”的GUI工具箱模型。

在某些方面,它们看起来似乎最有趣,或者至少很新颖。

一个已经规划好的后端被期望由我来负责―但是在开发最初的版本时,我有点懈怠。

希望在您读本文时,这会有所改进。

我自己开发的小型后端是ncurses。

如果它最终实现,则这开创了甚至在文本模式的终端(譬如,SSH/telnet会话)或者只是在纯UNIX机器(不带XWindow系统)上运行anygui应用程序的可能性。

按照curses后端的风格,anygui的项目负责人MagnusLieHetland已经建议了纯面向行界面(似乎有点倒退),它可以使用readlines支持。

在这个方案中,菜单将简化成提示符,接着是选项选择,再接着是反馈或者结果等等。

假想中的anygui.backends.textgui只需要STDIN和STDOUT来工作,这对于程序来说,是令人感兴趣的,因为它所需要的最少。

否则,该程序可能(一点未变动)运行在复杂的图形化、事件驱动和WIMP界面(窗口、图标、鼠标指针)。

当然,到目前为止,它还只是一个想法。

  还有一个古怪的想法也同样有趣。

每人都有一个Web浏览器(几乎),即使那个浏览器碰巧是lynx或者是links。

Python标准的webbrowser模块允许以一种与anygui以及和anygui具有相似功能的软件的方式,灵活地启动一个“最适当可用”的Web浏览器。

如果那个浏览器与某类LOCALHOST服务器通信,那么所有您想要的基本界面设备都完全在Web浏览器内(按钮、输入域、文本区域、图形等等)。

这个后端也处于规划阶段。

  一幅图片抵得上用千言万语来表达的含义(至少有时候)。

由于我的编辑们,出于善意,不希望将本专题出版为一万字的巨著,所以就让我们看几幅屏幕快照。

为了说明需要,使用了一个小玩具应用程序,有一些按钮,并且启用了几个不活动性的按钮(它的源代码显示如下)。

其中还包含了几个文本标签。

其它窗口小部件示例包含在anygui分发版的test目录中。

  首先值得一看的,我们可能认为是作为“默认缺省值”的后端Tkinter。

这个版本看上去和使用起来就与它应该做到的完全一致。

但是,win.destroy()调用就有点好笑―它没有立即破坏窗口(并且关闭应用程序),而是一旦当窗口受到足够的注意(比如移动窗口),它就将窗口变为一个会消失的鬼怪。

如同我说的,我们还停留在alpha阶段。

这个示例在Win98下运行:

Tkinter下的按钮应用程序(在Win98上)

  

  在Windows下运行时,还有一个利用win32all模块使用Windows本机调用的选项。

来自ActiveState的ActivePython分发版在缺省情况下有这个选项;否则,还需要另外获得此模块(也是来自ActiveState)。

总之,这种绑定是我看到的运行最好的一种―但那也只是反映在我做测试的版本上。

标签的放置与Tkinter上的有一点不同,这表示,一个人对不同后端不可能得到完全相同的视觉审美观。

  Win32下的按钮应用程序(在Win98上)

  

  接下来,我决定将话题转到一个完全不同的平台上。

在OS/2Warp4下运行Python,我得到了如下的结果。

由于某些原因,在文本标签前面多了一个不必要的。

尽管这是一个很小的错误,但令人印象深刻的是,同一段代码运行在不同的平台上,结果竟然是如此的不同:

  JavaSwing下的按钮应用程序(在OS/2Warp4上)

  

  然后转到Linux平台,在已经安装了PyGTK的系统上运行相同一个应用程序。

只为了好玩,我在几个不同的window管理器下运行该应用程序。

首先在Enlightenment上:

  GTK下的按钮应用程序(在Enlightenment上)

  

  然后在WindowMaker上:

 GTK下的按钮应用程序(WindowMaker上)

  

  在不同窗口管理器下的窗口框架内所有东西都是相同的。

标签的对齐和尺寸与Windows下的有点不同(需要额外增加几个像素,避免截断字)。

我无法很容易地在我任何一个系统上安装wxPython,但我想结果应该是相似的。

  BeOS后端还处于一种较原始的状态。

甚至玩具应用程序也失败了。

但是,基本的Window类工作得很好:

  BeOSr5上的窗口测试应用程序

  

  一些自身相同的代码

  这段运行在所有证明过的平台上的代码非常简单。

在我的示例中,该程序的上半部分完全是实现一个switch,允许从命令行手工选择要使用的后端。

在产品代码中,您将不会希望有这样的选择;但对于早期的测试,就象我所做的这些,是很有帮助。

然而请注意,这里显示的屏幕快照的这些所有测试完全在没有任何命令行选项的情况下运行―后端的选择是自动的。

让我们来看一下代码:

  [anygui]的‘button.py’文本应用程序     import

    sys

    

     if

    len(sys.argv)==

    1

    

     or

    sys.argv[1].upper()==

    

     'DEFAULT'

    :

    

     from

    anygui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'TK'

    :

    

     from

    anygui.backends.tkgui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'MSW'

    :

    

     from

    anygui.backends.tkgui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'BEOS'

    :

    

     from

    anygui.backends.beosgui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'GTK'

    :

    

     from

    anygui.backends.gtkgui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'JAVA'

    :

    

     from

    anygui.backends.javagui

    

     import

    Window,Button,Application,Label

    

     elif

    sys.argv[

    1].upper()==

    

     'WX'

    :

    

     from

    anygui.backends.wxgui

    

     import

    Window,Button,Application,Label

    

     def

    say_hello():

    

     global

    bye

    

     print

    

    

     "Hello,world!

"

    

  bye._set_enabled(

    1)

app=Application()

win=Window(width=

    150,height=

    150,title=

    

     "BeatlesLyric"

    )

win.add(Label(x=

    10,y=

    10,width=

    140,text=

    

     "Idon'tknowwhyyousay..."

    ))

bye=Button(x=

    30,y=

    40,width=

    70,height=

    30,text=

    "Goodbye",

      action=

    

     lambda

    :

win.destroy(),enabled=

    0)

win.add(bye)

win.add(Label(x=

    10,y=

    70,width=

    120,height=

    32,text=

    

     "WhenIsay..."

    ))

hi=Button(x=

    30,y=

    100,width=

    70,height=

    30,text=

    

     "Hello"

    ,action=say_hello)

win.add(hi)

win.show()

app.run()

  应用程序的主框架只由四个步骤组成:

(1)创建一个应用程序;

(2)创建一个或多个窗口;(3)在窗口中添加一些窗口小部件;(4)调用app.run()事件循环。

窗口小部件选项都作为命名的参数传递。

  结束语

  在目前的anyguialpha版中已经有编写基本“获取一些数据,对它进行处理,并且显示一些结果”的应用程序所需要的一切东西。

讨论列表中包含了许多关于更多细微差别的事件处理、视图模型等有趣的主题。

此外,anyguiAPI还需要正式的地编制文档。

然而在承诺方面,在很长一段时间内anygui与我看到的任何Python库相比,更令我兴奋。

几乎很难想象在Python自身运行的地方,它能够透明地获取复杂的用户界面,这是多么的方便―根本不需要为平台细节方面更改一行代码。

简明Python教程--前言

Python语言可能是第一种即简单又功能强大的编程语言。

它不仅适合于初学者,也适合于专业人员使用,更加重要的是,用Python编程是一种愉快的事。

本身将帮助你学习这个奇妙的语言,并且向你展示如何即快捷又方便地完成任务——真正意义上“为编程问题提供的完美解决方案!

  本书的读者

  本书可以作为Python编程语言的一本指南或者教程。

它主要是为新手而设计,不过对于有经验的程序员来说,它同样有用。

  即便你对计算机的了解只是如何在计算机上保存文本文件,你都可以通过本书学习Python。

如果你有编程经验,你也可以使用本书学习Python。

  如果你以前有编程经验,那么你将会对Python语言和其他你所钟爱的编程语言之间的区别感兴趣。

对此我为你指出了许多这样的区别。

顺便提醒你,Python将很快成为你最喜欢的编程语言!

  本书的由来

  我最初接触Python是当我需要为我的软件钻石写一个方便安装过程的安装程序的时候。

我得在Python和Perl语言中选择一个绑定Qt库。

我在网上做了一些研究,偶然发现了一篇文章。

那是EricS.Raymond(著名的电脑高手)谈Python如何成为它最喜欢地编程语言的一篇文章。

我同时发现PyQt绑定与Perl-Qt相比要出色得多,所以我选择了Python语言。

  之后我开始寻找一本关于Python的优秀书籍。

我竟然找不到!

虽然我找到了一些O'Reilly的书,不过它们不是太贵就是如同一本参考手册而不是一本指南。

我最后使用了Python附带的文档,不过它太简略了。

那个文档确实很好的给出了Python的概念,不过不够全面。

尽管最后我根据我以前得编程经验掌握了那个文档,不过我觉得它完全不适合于新手。

  大约在我首次使用Python语言的六个月之后,我安装了那时最新的RedHat9.0Linux。

在我玩弄KWord应用程序的时候,我突然想写一点关于Python的东西。

很快我就写了30多页,然后我开始认真地想办法把它变成一本完整的书。

经过多次的改进和重写,它终于成为了一本有用的完整的Python语言学习指南。

我把本书贡献给开源软件者们。

  本书来自于我个人学习Python的笔记,不过我尽力让它更加适合别人的口味。

  在开源精神的鼓舞下,我收到了许多建设性的建议和批评以及来自热心读者的反馈,它们使这本书变得更加出色。

  本书目前的状况

  本书目前仍然在进一步完善中。

许多章节已经频繁地做了修改。

然而本书已经十分成熟了,你一定可以很容易地通过它学习Python。

如果你觉得本书中有什么错误或者难懂的地方,请告诉我。

  本书将来计划增加更多的章节,包括wxPython,Twisted,有可能的话甚至还有BoaConstructor。

  本书的官方网站是www.byteofpython.info。

你可以在这个网站上在线阅读本书,也可以下载本书的最新版本或给我反馈。

  约定条款

  本书(原版)依照创作共用约定(署名-非商业作品-保持一致)发布。

简单地说,你只要署上我的名字,就可以免费复制、分发和展示本书。

未得到我的允许,你禁止把本书用于商业目的。

你在修改本书的时候,必须清楚地标明所有做了改动的地方,你发布修改后的作品时也必须遵照与本书相同的约定。

  请访问创作公用约定的网站浏览约定全文,或者查看一个简单易懂的约定描述。

那里还有一个连环画似的约定条款的解释。

  反馈

  我尽了很大的力让这本书即生动又尽可能的准确。

然而,如果你找到任何不太令你满意的地方或者错误,或者是需要改进的地方,请告诉我以便我改正它们。

你可以把它们通过*************************发送给我。

  值得思考的一些东西

  有两种方式构建软件设计:

一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。

  ——C.A.R.Hoare

  获得人生中的成功需要的专注与坚持不懈多过天才与机会。

  ——C.W.Wendte

 

简明Python教程--第1章介绍

简介

  Python语言是少有的一种可以称得上即简单又功能强大的编程语言。

你将惊喜地发现Python语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构。

  Python的官方介绍是:

  Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。

Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。

  我会在下一节里详细地讨论Python的这些特点。

  注释

  Python语言的创造者GuidovanRossum是根据英国广播公司的节目“蟒蛇飞行马戏”命名这个语言的,并非他本人特别喜欢蛇缠起它们的长身躯碾死动物觅食。

  Python的特色

  简单

  Python是一种代表简单主义思想的语言。

阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!

Python的这种伪代码本质是它最大的优点之一。

它使你能够专注于解决问题而不是去搞明白语言本身

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2