`

python概览

阅读更多
2.1 概览
先看下第一个Python程序.
文件名: odbchelper.py

def buildConnectionString(params):
    """Build a connection string from a dictionary of
    parameters. Returns string. """
  
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master" }
    print buildConnectionString(myParams)

先打开第一章安装的ActivePython.
选File - New
选 Python Script
把上边的代码复制在编辑器中. 保存为odbchelper.py
再选 File - Run
可以看到运行结果.


2.2 函数声明
例如上边例子中的:
def buildConnectionString(params):
其中:
def 是关键字. 函数声明以它开始.
接着是函数名.
再接着的()中是参数表. 多个参数用逗号分割.

它不需要声明返回类型. 实际上. 每个Python函数都返回一个值:
若函数执行过return语句. 则返回指定的值. 否则返回None(Python的空值).

并且在函数的参数表中. 不需要指定参数类型. 在调用的时候. 会自动将类型记录下来.


2.3 文档化函数
在前边例子中. 函数定义中的第一个东西是以"""开头和结尾的字符串.
    """Build a connection string from a dictionary of
    parameters. Returns string. """
这种用三个引号扩起来的字符串. 表示它是一个多行字符串. 它们之间(包括回车符)的东西都作为字符串的内容.

这种字符串可以用在任何地方. 但它们现在用在这里是作为函数的文档(即注释).
函数的文档(如果存在) 必须是函数定义时的第一个内容(冒号后的第一个内容).

而且在Python中. 函数的文档可以在运行时作为函数的属性.


2.4 万物皆对象
上一讲最后提到. 函数的文档可以在运行时作为函数的属性.
在Python中. 一切东西都是对象. 都有属性和方法. 函数也是对象.
这一讲具体看一个例子来学习一下.
例如. 在使用的IDE的 Interactive Window(交互窗口) 中:
>>> import odbchelper
>>> print odbchelper.buildConnectionString.__doc__
就可以打印出该函数的文档.

其中:
import 是导入一个程序模块. 模块指的是: 可以交互使用的一个代码段.
导入一个模块后. 就可以引用它的公共函数. 类. 或属性.
所以可以在一个模块中通过 import 来使用其它模块. 也可以在IDE中这样做.
使用导入的模块中的函数. 要通过模块的名字来访问. 正如例子中那样.
这里我们访问的是该函数的__doc__属性. 它是每个函数对象都有的内置属性.

模块导入的搜索路径
说到了模块的导入. 就要说说库的搜索路径.
在导入一个模块时. Python会在 sys.path 中指定的目录进行搜索.
而 sys.path 是一个list对象. 可以通过 list 的方法来查看或修改它.
这样我们通过修改 sys.path 就可以追加搜索路径.


2.5 代码缩进
Python 不使用 {} 来作为函数的开始和结束. 而是用代码块的缩进.
象函数. if语句. for. while等. 都是用代码块的缩进来表示块的开始和结束.
例如:
def fib(n):                 
    print 'n =', n          
    if n > 1:               
        return n * fib(n - 1)
    else:                   
        print 'end of the line'
        return 1
这个例子可以看出 Python的风格:
    用硬回车来分割语句. 用冒号和缩进来分割代码块.
    如果语句太长. 可以用续行符 \ 来续行. 续行时代码可以随便缩进.
    实际上. 在{} [] () 中的表达式也可以不用续行符 \ 而直接写为多行.
不过. 缩进的字符数没有限制.

例子中的 print语句 用来向屏幕输出. 它可以接受任何数据类型. 如字符串. 整数. list等.
而且可以用一个print语句输出多个内容. 只要把它们用逗号隔开就行了.


2.6 测试模块
首先. 和函数一样. Python的模块也是对象. 模块对象都有一个内置属性__name__
这个__name__属性的值. 根据如何使用该模块而定.
当 import一个模块时. __name__的值是该模块的文件名.
当 直接运行一个模块时. __name__的值是一个特别的值: __main__

所以为了测试一个模块. 可以在该模块的内部设计一个测试套件.
即加入一个类似下边的if语句:
if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master" }
    print buildConnectionString(myParams)
这样. 当直接运行该模块时执行指定的代码. 而在该模块被其它模块 import 时却忽略.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics