Python程序设计清华大学出版社董付国基础知识课件

上传人:pu****.1 文档编号:570140050 上传时间:2024-08-02 格式:PPT 页数:44 大小:104.50KB
返回 下载 相关 举报
Python程序设计清华大学出版社董付国基础知识课件_第1页
第1页 / 共44页
Python程序设计清华大学出版社董付国基础知识课件_第2页
第2页 / 共44页
Python程序设计清华大学出版社董付国基础知识课件_第3页
第3页 / 共44页
Python程序设计清华大学出版社董付国基础知识课件_第4页
第4页 / 共44页
Python程序设计清华大学出版社董付国基础知识课件_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《Python程序设计清华大学出版社董付国基础知识课件》由会员分享,可在线阅读,更多相关《Python程序设计清华大学出版社董付国基础知识课件(44页珍藏版)》请在金锄头文库上搜索。

1、PythonPython程序设计程序设计- -清华大清华大学出版社学出版社- -董付国基础知董付国基础知识识PPTPPT讲座讲座1.0 Python是一种怎样的语言l l解释型语言,伪编译解释型语言,伪编译l l胶水语言胶水语言l l开源开源l l跨平台跨平台l l免费、自由软件免费、自由软件l l强类型、动态类型强类型、动态类型l l自动内存管理自动内存管理l l面向对象面向对象l l有大量可用的库有大量可用的库l l增加其他语言编写并编译的模块即可扩展功能增加其他语言编写并编译的模块即可扩展功能1.1 Python版本之争版本之争l l2.x2.x:一边鄙视一边用:一边鄙视一边用l l3.

2、x3.x:必然的趋势:必然的趋势l l多版本共存与切换简便方法:更改系统环境变量多版本共存与切换简便方法:更改系统环境变量pathpathl l查看已安装版本的方法(在所启动的查看已安装版本的方法(在所启动的IDLEIDLE界面也界面也可以直接看到):可以直接看到): import sys import sys sys.version sys.version2.7.8 (default, Jun 30 2014, 16:08:48) MSC v.1500 64 bit (AMD64)2.7.8 (default, Jun 30 2014, 16:08:48) MSC v.1500 64 bit

3、 (AMD64) sys.version_info sys.version_infosys.version_info(major=2, minor=7, micro=8, releaselevel=final, serial=0)sys.version_info(major=2, minor=7, micro=8, releaselevel=final, serial=0)1.2 安装Pythonhttps:/www.python.org/https:/www.python.org/https:/www.python.org/doc/https:/www.python.org/doc/http

4、:/bugs.python.org/http:/bugs.python.org/https:/ lAlt+PAlt+P、Alt+NAlt+N:浏览历史命令:浏览历史命令l lCtrl+F6Ctrl+F6:重启:重启ShellShell,之前定义的对象全部无效,之前定义的对象全部无效l lF1F1:打开:打开PythonPython帮助文档帮助文档l lAlt+/Alt+/:自动补全前面曾经出现过的单词,在多个单词中循环选择:自动补全前面曾经出现过的单词,在多个单词中循环选择l lCtrl+Ctrl+、Ctrl+Ctrl+:缩进代码:缩进代码l lAlt+3Alt+3、Alt+4Alt+4:注释

5、、取消注释:注释、取消注释其他可选开发环境:其他可选开发环境:wxPythonwxPython、JythonJython、1.3 使用pip管理第三方包l lPython2Python2中需要单独安装中需要单独安装l l下载地址:下载地址:https:/pypi.python.org/pypi/piphttps:/pypi.python.org/pypi/pipl l安装方法:安装方法:cmd=python get-pip.pycmd=python get-pip.pyl l用法示例用法示例pip install NumPypip install NumPypip listpip listpi

6、p install -upgrade SomePackagepip install -upgrade SomePackagepip uninstall SomePackagepip uninstall SomePackagel lPython3Python3安装包中已默认包含安装包中已默认包含pippip1.4 Python基础知识基础知识1.4.1 Python的对象模型的对象模型对象是python语言中最基本的概念,在python中处理的每样东西都是对象。python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等;非内置对象需要导入模块才能使用,如正弦函

7、数sin(x),随机数产生函数random( )等。1.4.1 Python的对象模型的对象模型l l常用内置对象常用内置对象1.4.2 python的变量和引用的变量和引用1.1.变量的创建变量的创建变量的创建变量的创建 x=3 x=3 创建了变量创建了变量x x,不需要提前声明变量,不需要提前声明变量 a,b=3,5 a,b=3,5 a,b=b,a a,b=b,a2.2.引用引用引用引用 在在pythonpython中从变量到对象的连接称为引用。中从变量到对象的连接称为引用。x=3x=3变量拥有自己的存储空间,变量连接到对象是该变量存储了变量拥有自己的存储空间,变量连接到对象是该变量存储了

8、对象单元的内存地址,并没有存储对象的值。对象单元的内存地址,并没有存储对象的值。x3变量对象引用1.4.2 python的变量和引用的变量和引用3. 3. 共享引用共享引用共享引用共享引用共享引用是指多个共享引用是指多个变变量引用同一个量引用同一个对对象。下面的象。下面的语语句使两句使两个个变变量都引用同一个量都引用同一个对对象象3 3a=3a=3b=ab=a使用使用idid函数函数可以查看对象的内存地址可以查看对象的内存地址4.4.垃圾回收机制垃圾回收机制 对于没有任何变量指向的值,对于没有任何变量指向的值,PythonPython自动将其删除。自动将其删除。PythonPython跟踪所有

9、的值,并自动删除不再有变量指向的值。跟踪所有的值,并自动删除不再有变量指向的值。1.4.2 python的变量和引用的变量和引用5.5.对象类型的动态的,强类型对象类型的动态的,强类型 a=3 a=3 type(a) type(a) a=4 a=4 type(a) type(a) a=3,5 a=3,5 type(a) type(a) a=1,2,3 a=1,2,3 type(a) type(a)1.4.2 python的变量和引用的变量和引用6. 6. 变量命名变量命名l l以字母或下划线(有特殊含义)开头以字母或下划线(有特殊含义)开头l l变量名中不能有空格以及标点符号(括号、引号、逗号

10、、变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等等)斜线、反斜线、冒号、句号、问号等等)l l不要使用关键字(在不要使用关键字(在keywordkeyword模块中)作变量名模块中)作变量名l l不要使用系统内置的模块名或函数名(可以通过不要使用系统内置的模块名或函数名(可以通过dir(_builtins_)dir(_builtins_)查看)作变量名查看)作变量名l l大小写敏感大小写敏感1.4.3 数字l数字是python中最常用的对象,属于不可变对象。l可以表示任意大小的数字。 a=99999999999999999999999999999999 a=

11、99999999999999999999999999999999 a*a a*a999999999999999999999999999999980000000000000000000000009999999999999999999999999999999800000000000000000000000000000001L00000001L a*3 a*399999999999999999999999999999997000000000000000000000000999999999999999999999999999999970000000000000000000000000000000299

12、999999999999999999999999999999L0000000299999999999999999999999999999999LPythonPython的的IDELIDEL交互界面可以当做简便计算器来使用。交互界面可以当做简便计算器来使用。1.4.3 数字1.4.3.1整数l l十进制整数如,十进制整数如,0 0、-1-1、9 9、123123l l十六进制整数,需要十六进制整数,需要1616个数字个数字0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9、a a、b b、c c、d d、e e、f f来表示整数,必须以来表示整数,必须以0x0x开头,

13、如开头,如0x100x10、0xfa0xfa、0xabcdef0xabcdefl l八进制整数,只需要八进制整数,只需要8 8个数字个数字0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7来来表示整数,必须以表示整数,必须以0o0o开头,如开头,如0o350o35、0o110o11l l二进制整数、只需要二进制整数、只需要2 2个数字个数字0 0、1 1来表示整数,必须以来表示整数,必须以0b0b开头如,开头如,0b1010b101、0b1000b1001.4.3 数字1.4.3.2浮点数l浮点数又称小数,l15.0、0.37、-11.2、1.2e2、314.15e-21.4.3

14、数字1.4.3.3复数PythonPython中的复数与数学上的复数一致,由实部和虚部构成,中的复数与数学上的复数一致,由实部和虚部构成,并且使用并且使用j j或或J J来表示虚部。来表示虚部。a=3+4ja=3+4jb=5+6jb=5+6jc=a+bc=a+bcc8+10j8+10jc.real#c.real#复数的复数的实实部部8.08.0c.imagc.imag# #复数的虚部复数的虚部10.010.0 a.conjugate() a.conjugate()(3-4j)(3-4j)1.4.4字符串l l用单引号、双引号或三引号括起来的符号系列称为字符串用单引号、双引号或三引号括起来的符号

15、系列称为字符串l l单引号、双引号、三单引号、三双引号可以互相嵌套,用单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。来表示复杂字符串。l labcabc、123123、 中国中国 、PythonPythonl l字符串属于不可变序列字符串属于不可变序列l l 空串表示为空串表示为 或或 l l三引号三引号 或或表示的字符串可以换行,支持排版较为复杂表示的字符串可以换行,支持排版较为复杂的字符串;三引号还可以在程序中表示较长的注释。的字符串;三引号还可以在程序中表示较长的注释。1.4.4字符串1. 1. 字符串合并字符串合并字符串合并字符串合并 a=abc + 123 #

16、a=abc + 123 #生成新对象生成新对象2. 2. 字符串格式化字符串格式化字符串格式化字符串格式化 把对象按格式要求转换为字符串。把对象按格式要求转换为字符串。a=3.6674a=3.6674%7.3f % a #%7.3f % a #或者直接使用或者直接使用str(a)str(a) 3.667 3.6671.4.4字符串3. 3. 转义字符转义字符转义字符转义字符l lnn:换行符:换行符:换行符:换行符l lt t:制表符:制表符:制表符:制表符l lr r:回车:回车:回车:回车l l :单引号:单引号:单引号:单引号l l”:双引号:双引号:双引号:双引号l l :一个:一个:

17、一个:一个 l ldddddd:3 3位八进制数对应的字符位八进制数对应的字符位八进制数对应的字符位八进制数对应的字符l lxhhxhh:2 2位十六进制数对应的字符位十六进制数对应的字符位十六进制数对应的字符位十六进制数对应的字符 字符串界定符前面加字母字符串界定符前面加字母r r表示原始字符串,其中的特殊字表示原始字符串,其中的特殊字符不进行转义,但字符串的最后一个字符不能是符不进行转义,但字符串的最后一个字符不能是 。1.4.5 操作符和表达式1.4.6 常用内置函数l l内置函数不需要导入任何模块即可使用内置函数不需要导入任何模块即可使用l l执行下面的命令可以列出所有内置函数执行下面

18、的命令可以列出所有内置函数 dir(_builtins_) dir(_builtins_)1.4.6 常用内置函数1.4.6 常用内置函数1.4.7 对象的删除PythonPython中删除对象用中删除对象用deldel语句。语句。deldel用来删除一个对象,并释用来删除一个对象,并释放对象所占资源。放对象所占资源。deldel的用法演示如下:的用法演示如下:a=1, 2, 3a=1, 2, 3del a1del a1aa1, 31, 3x=5x=5xx5 5del x #del x #此后此后x x就不存在了就不存在了 1.4.8 基本输入输出用用PythonPython进行程序设计,输入

19、是通过进行程序设计,输入是通过input( )input( )函数来实现的,函数来实现的,imputimput( )( )的一般格式为:的一般格式为:x=input(x=input(提示:提示:) )该函数返回输入的对象。可输入数字、字符串和其它任意类该函数返回输入的对象。可输入数字、字符串和其它任意类型对象。型对象。1.4.8 基本输入输出输出是通过输出是通过printprint语句来完成的,语句来完成的,printprint语句的一般格式为:语句的一般格式为:print print 对象对象1, 1, 对象对象2, . , 2, . , 对象对象n n在在Python3Python3中,中

20、,printprint是函数,而不是语句。是函数,而不是语句。1.4.8 基本输入输出在在Python2.7.8Python2.7.8之前的版本中进行重定向输出的用法:之前的版本中进行重定向输出的用法: fp = open(rc:mytest.txt,a+) fp = open(rc:mytest.txt,a+) print fp, Hello,world print fp, Hello,world fp.close() fp.close()在在Python 3.4.2Python 3.4.2版本中进行重定向输出的用法:版本中进行重定向输出的用法: fp = open(rd:mytest.tx

21、t, a+) fp = open(rd:mytest.txt, a+) print(Hello,world!, file = fp) print(Hello,world!, file = fp) fp.close() fp.close()1.4.9 模块的使用l lPythonPython默认安装仅包含部分基本或核心模块,但用户可以默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,安装大量的扩展模块,pippip是管理模块的重要工具。是管理模块的重要工具。l l在在PythonPython启动时,仅加载了很少的一部分模块,在需要时启动时,仅加载了很少的一部分模块,在需要时由程序员

22、显式地加载(可能需要先安装)其他模块。由程序员显式地加载(可能需要先安装)其他模块。l l减小运行的压力,仅加载真正需要的模块和功能,且具有减小运行的压力,仅加载真正需要的模块和功能,且具有很强的可扩展性。很强的可扩展性。1.4.9 模块的使用l limportimport模模块块名名importmathimportmathmath.sin(0.5)#math.sin(0.5)#求求0.50.5的正弦的正弦importrandomimportrandomx=random.random()#x=random.random()#获获得得0,1)0,1)内的随机小数内的随机小数y=random.ra

23、ndom()y=random.random()n=random.randint(1,100)#n=random.randint(1,100)#获获得得1,1001,100上的随机整数上的随机整数l l可以使用可以使用dirdir函数查看任意模块中所有的对象列表,如果调函数查看任意模块中所有的对象列表,如果调用不带参数的用不带参数的dir()dir()函数,则返回当前脚本的所有名字列表。函数,则返回当前脚本的所有名字列表。l l可以使用可以使用helphelp函数查看任意模块或函数的使用帮助。函数查看任意模块或函数的使用帮助。1.4.9 模块的使用l lfrommathimportsin#fro

24、mmathimportsin#可以减少查询次数,提高执行速度可以减少查询次数,提高执行速度l lfrommathimport*#frommathimport*#谨慎使用谨慎使用 from math import sin from math import sin sin(3) sin(3)0.14112000805986720.1411200080598672 from math import sin as f # from math import sin as f #别名别名 f(3) f(3)0.1411200080598670.1411200080598671.4.9 模块的使用l l可以

25、使用可以使用sys.modules.items()sys.modules.items()显示所有预加载模块的相关显示所有预加载模块的相关信息信息l l在在2.x2.x中可以使用中可以使用reloadreload函数重新导入一个模块,在函数重新导入一个模块,在3.x3.x中,中,需要使用需要使用impimp模块的模块的reloadreload函数函数l lPythonPython首先在当前目录中查找需要导入的模块文件,如果首先在当前目录中查找需要导入的模块文件,如果没有找到则从没有找到则从syssys模块的模块的pathpath变量所指定的目录中查找。变量所指定的目录中查找。可以使用可以使用sy

26、ssys模块的模块的pathpath变量查看变量查看pythonpython导入模块时搜索导入模块时搜索模块的路径,也可以向其中模块的路径,也可以向其中appendappend自定义的目录以扩展自定义的目录以扩展搜索路径。搜索路径。l l在导入模块时,会优先导入相应的在导入模块时,会优先导入相应的pycpyc文件,如果相应的文件,如果相应的pycpyc文件与文件与pypy文件时间不相符,则导入文件时间不相符,则导入pypy文件并重新编译文件并重新编译该模块。该模块。1.4.9 模块的使用l lososl lsyssysl lmathmathl lLocaleLocale:提供了:提供了C C语

27、言本地化函数的接口,并提供相关函数实现基于当前语言本地化函数的接口,并提供相关函数实现基于当前localelocale设置的设置的数字与字符串转换数字与字符串转换l lrandomrandoml lstructstructl lpicklepickle:序列化:序列化l ldatetimedatetimel ltimetimel lwmiwmi:需安装:需安装l ltkintertkinter:GUIGUI开发开发l lurllib/urllib2urllib/urllib2:网页编程:网页编程l lPygamePygame:游戏开发:游戏开发l ltkintertkinter、wxPytho

28、nwxPython:GUIGUI编程编程l lSciPySciPy:科学计算:科学计算l lPILPIL:图像处理:图像处理l lfabricfabric:远程操作与部署,:远程操作与部署,http:/docs.fabfile.org/en/1.10/http:/docs.fabfile.org/en/1.10/l lcapstonecapstone:反汇编框架:反汇编框架l lropperropper:ROPROP相关框架相关框架l lIDAPythonIDAPython:IDAIDA插件,插件,https:/ lYaraYara:恶意软件识别与分类引擎:恶意软件识别与分类引擎1.5 Pyt

29、hon代码规范代码规范(1 1)缩进)缩进l l类定义、函数定义、选择结构、循环结构,行尾的冒号表类定义、函数定义、选择结构、循环结构,行尾的冒号表示缩进的开始示缩进的开始l l python python程序是依靠代码块的缩进来体现代码之间的逻辑关程序是依靠代码块的缩进来体现代码之间的逻辑关系的,缩进结束就表示一个代码块结束了。系的,缩进结束就表示一个代码块结束了。l l 同一个级别的代码块的缩进量必须相同。同一个级别的代码块的缩进量必须相同。l l一般而言,以一般而言,以4 4个空格为基本缩进单位,可以通过下面的个空格为基本缩进单位,可以通过下面的方法进行方法进行代码块的缩进和反缩进代码块

30、的缩进和反缩进:FortmatFortmatIndent Region/Dedent RegionIndent Region/Dedent Region1.5 Python代码规范代码规范(2 2)注释)注释一个好的、可读性强的程序一般包含一个好的、可读性强的程序一般包含30%30%以上的注释。常用以上的注释。常用的注释方式主要有两种:的注释方式主要有两种:l l 以以# #开始,表示本行开始,表示本行# #之后的内容为注释之后的内容为注释l l 包含在一对三引号包含在一对三引号.或或.之间且不属于任何语句的之间且不属于任何语句的内容将被解释器认为是注释内容将被解释器认为是注释在在IDLEID

31、LE开发环境中,可以通过下面的操作快速注释开发环境中,可以通过下面的操作快速注释/ /解除注解除注释大段内容:释大段内容:l lFormatFormatComment Out Region/Uncomment RegionComment Out Region/Uncomment Region1.5 Python代码规范代码规范(3 3)每个每个importimport只导入一个模块只导入一个模块(4 4)如果一行语句太长,可以在行尾加上)如果一行语句太长,可以在行尾加上 来换行分成多行,来换行分成多行,但是更建议使用括号来包含多行内容。但是更建议使用括号来包含多行内容。(5 5)必要的空格与空

32、行)必要的空格与空行l l运算符两侧、函数参数之间、逗号两侧建议使用空格分开。运算符两侧、函数参数之间、逗号两侧建议使用空格分开。l l不同功能的代码块之间、不同的函数定义之间建议增加一不同功能的代码块之间、不同的函数定义之间建议增加一个空行以增加可读性。个空行以增加可读性。(6 6)适当使用异常处理结构进行容错,后面将详细讲解。)适当使用异常处理结构进行容错,后面将详细讲解。(7 7)软件应具有较强的可测试性,测试与开发齐头并进,)软件应具有较强的可测试性,测试与开发齐头并进,后面将详细讲解。后面将详细讲解。1.6 Python文件名l l.py.py:PythonPython源文件源文件l

33、 l.pyc.pyc:PythonPython字节码文件。对于字节码文件。对于PythonPython模块,第一次被导模块,第一次被导入时将被编译成字节码的形式,以提高脚本的启动速度。入时将被编译成字节码的形式,以提高脚本的启动速度。对于非模块文件,直接执行时并不生成对于非模块文件,直接执行时并不生成pycpyc文件,可以使文件,可以使用用py_compilepy_compile模块的模块的compilecompile函数进行编译。函数进行编译。l l.pyo.pyo:优化的:优化的PythonPython字节码文件。可以使用字节码文件。可以使用”python O ”python O file

34、.py”file.py”或或”python OO file.py”python OO file.py”进行优化编译。进行优化编译。1.7 Python程序的运行方式l l每个每个PythonPython脚本在运行时都有一个脚本在运行时都有一个_name_name_属性。属性。l l如果脚本作为模块被导入,则其如果脚本作为模块被导入,则其_name_name_属性被设置为属性被设置为模块名;如果脚本独立运行,则其模块名;如果脚本独立运行,则其_name_name_属性被设置属性被设置为为_main_main_。1.8 编写自己的包与模块l l包可以看做处于同一目录中的模块。包可以看做处于同一目录

35、中的模块。l l在包的每个目录中都必须包含一个在包的每个目录中都必须包含一个_init_.py_init_.py文件,该文文件,该文件可以是一个空文件,仅用于表示该目录是一个包。件可以是一个空文件,仅用于表示该目录是一个包。l l_init_.py_init_.py文件的主要用途是设置文件的主要用途是设置_all_all_变量以及所包含变量以及所包含的包初始化所需的代码。其中的包初始化所需的代码。其中_all_all_变量中定义的对象可变量中定义的对象可以在使用以在使用from import *from import *时全部正确导入。时全部正确导入。1.9 Python快速入门l l问题问题

36、1 1:用户输入一个三位自然数,计算并输出其佰位、:用户输入一个三位自然数,计算并输出其佰位、十位和个位上的数字。十位和个位上的数字。x = input(x = input(请输入一个三位数:请输入一个三位数:) )a = x/100a = x/100b = x/10%10 #b = x/10%10 #或或 b=x%100/10 b=x%100/10c = x - 100*a - 10*b #c = x - 100*a - 10*b #或或c = x%10c = x%10print a, b, cprint a, b, c1.9 Python快速入门l l问题问题2 2:已知三角形的两边长及其

37、夹角,求第三边长。:已知三角形的两边长及其夹角,求第三边长。import mathimport mathx = input(x = input(输入两边及夹角输入两边及夹角( (度度) ):) )a, b, sita = xa, b, sita = xc = math.sqrt(a*2 + b*2 - 2*a*b*math.cos(sita*math.pi/180)c = math.sqrt(a*2 + b*2 - 2*a*b*math.cos(sita*math.pi/180)print c=,cprint c=,c1.9 Python快速入门l l上面的代码也可以写成这样,虽然减少了需要输

38、入的代码,上面的代码也可以写成这样,虽然减少了需要输入的代码,但一般不建议这样做:但一般不建议这样做:from math import *from math import *x = input(x = input(输入两边及夹角输入两边及夹角( (度度) ):) )a, b, sita = xa, b, sita = xc = sqrt(a*2 + b*2 - 2*a*b*cos(sita*pi/180)c = sqrt(a*2 + b*2 - 2*a*b*cos(sita*pi/180)print c=,cprint c=,c1.9 Python快速入门l l这样就可以了这样就可以了:fro

39、m math import from math import sqrtsqrtx = input(x = input(输入两边及夹角输入两边及夹角( (度度) ):) )a, b, sita = xa, b, sita = xc = sqrt(a*2 + b*2 - 2*a*b*cos(sita*pi/180)c = sqrt(a*2 + b*2 - 2*a*b*cos(sita*pi/180)print c=,cprint c=,c1.9 Python快速入门l l问题问题3 3:任意输入三个英文单词,按字典顺序输出。:任意输入三个英文单词,按字典顺序输出。s s = = input(x,y

40、,z=)input(x,y,z=)x, x, y,zy,z = = s.split(,)s.split(,)ifxifx y:y: x,yx,y = = y,xy,xifxifx z: z:x,zx,z = = z,xz,xifyify z: z:y,zy,z = = z,yz,yprint(x,y,z)print(x,y,z)1.10 The Zen of Pythonl lBeautiful is better than ugly.Beautiful is better than ugly.l lExplicit is better than implicit.Explicit is be

41、tter than implicit.l lSimple is better than complex.Simple is better than complex.l lComplex is better than complicated.Complex is better than complicated.l lFlat is better than nested.Flat is better than nested.l lSparse is better than dense.Sparse is better than dense.l lReadability counts.Readabi

42、lity counts.l lSpecial cases arent special enough to break the rules.Special cases arent special enough to break the rules.l lAlthough practicality beats purity.Although practicality beats purity.l lErrors should never pass silently.Errors should never pass silently.l lUnless explicitly silenced.Unl

43、ess explicitly silenced.l lIn the face of ambiguity, refuse the temptation to guess.In the face of ambiguity, refuse the temptation to guess.l lThere should be one- and preferably only one -obvious way to do There should be one- and preferably only one -obvious way to do it.it.l lAlthough that way m

44、ay not be obvious at first unless youre Dutch.Although that way may not be obvious at first unless youre Dutch.l lNow is better than never.Now is better than never.l lAlthough never is often better than Although never is often better than rightright now. now.l lIf the implementation is hard to expla

45、in, its a bad idea.If the implementation is hard to explain, its a bad idea.l lIf the implementation is easy to explain, it may be a good idea.If the implementation is easy to explain, it may be a good idea.l lNamespaces are one honking great idea - lets do more of those!Namespaces are one honking great idea - lets do more of those!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号