`
thecloud
  • 浏览: 881177 次
文章分类
社区版块
存档分类
最新评论

《简明python教程》总结(三)-- 函数、模块

 
阅读更多
函数
函数通过def关键字定义,参数在函数定义的圆括号对内指定,用逗号分割
示例:
#!/usr/bin/python
# Filename: func_param.py
def printMax(a, b):
if a > b:
print a, 'is maximum'
else:
print b, 'is maximum'
printMax(3, 4)# directly give literal values
x = 5
y = 7
printMax(x, y)
输出
$ python func_param.py
4 is maximum
7 is maximum
全局变量与局部变量
局部变量
在函数定义内声明变量的时候,它与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。
示例
#!/usr/bin/python
# Filename: func_local.py
def func(x):
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func(x)
print 'x is still', x
输出
$ python func_local.py
x is 50
Changed local x to 2
x is still 50
全局变量
为一个定义在函数外的变量赋值,需告诉Python这个变量名不是局部的,而是全局 的。使用global语句完成这一功能,表明使用的变量为外面的块定义的。没有global语句,是不可能为定义在函数外的变量赋值的
示例
#!/usr/bin/python
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
输出
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2
默认参数值
为一些函数的参数提供一些默认的值。当函数调用时未指定该形参对应的实参时,则使用函数定义时 为形参定义的默认值
注:函数定义时,参数的默认值应从右向左给出。同C/C++方式。 如 func(a,b=1,c=2)正确,func(a=1,b,c=2)错误
关键参数
对于函数的参数,只想指定其中的一部分,那么可以通过命名来为这些参数赋值——这被称作关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参
#!/usr/bin/python
# Filename: func_key.py
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
输出
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
Docstrings--文档字符串
DocStrings是一个重要的工具,帮助程序文档更加简单易懂,应该尽量使用它。可以在程序运行的时候,从函数恢复文档字符串!
示例:
#!/usr/bin/python
# Filename: func_doc.py
def printMax(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'
''
x = int(x)# convert to integers, if possible
y = int(y)
if x > y:
print x, 'is maximum'
else:
print y, 'is maximum'
printMax(3, 5)
print printMax.__doc__
输出
$ python func_doc.py
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.
分析:
在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,DocStrings也适用于模块和类
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
使用__doc__ (注意双下划线)调用printMax函数的文档字符串属性(属于函数的名称)。
help()抓取的即为函数的__doc__属性
建议:
对所写的任何正式函数编写文档字符串。

模块
模块基本上就是一个包含了所有定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。
作用:重用其他程序中的函数和变量。即模块可以从其他程序输入以便利用它的功能。
例:使用标准库模块 sys模块
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'
输出
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH is ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
分析:
import sys 告诉Python,我们想要使用sys这个模块。sys模块包含了与Python解释器和它的环境有关的函数。
当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你使用 。
sys.path包含输入模块的目录名列表。sys.path的第一个字符串是空的——这个空的字符串表示当前目录也是sys.path的一部分,这与PYTHONPATH环境变量是相同的。这意味着可以直接输入位于当前目录的模块。否则,你得把你的模块放在sys.path所列的目录之一
字节编译的.pyc文件
输入一个模块相对来说是一个比较费时的事情,Python做了一些技巧,以便使输入模块更加快一些。
一种方法是创建 字节编译的文件 ,这些文件以.pyc作为扩展名。字节编译的文件与Python变换程序的中间状态有关(是否还记得Python如何工作的介绍?)。当下次从别的程序输入这个模块的时候,.pyc文件是十分有用的——它会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的。
创建自己的模块
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
# End of mymodule.py
记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。
调用模块
示例
#!/usr/bin/python
# Filename: mymodule_demo.py
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
输出
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1
使用 from...import
(from x import a,b,c 表示从模块 x中 导出 变量/函数 a,b,c)
#!/usr/bin/python
# Filename: mymodule_demo2.py
from mymodule import sayhi, version
# Alternative:
# from mymodule import *
sayhi()
print 'Version', version
输出同上
dir()函数
内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。
当为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表
例:
#!/usr/bin/env python
#filename:mymodule.py
import sys
def sayhi():
print 'Hi, this is mymodule speaking.'

version = '0.1'

print dir()
print dir(sys)
返回:其中 第一个[]内的属性为当前模块的,第二个[]内的属性为 sys模块的
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sayhi', 'sys', 'version']
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

分享到:
评论

相关推荐

    简明 Python 教程.rar

    简明 Python 教程 概括.......30 第6章控制流......31 简介.......31 if语句.....31 while语句...........34 for循环...36 break语句...........37 continue语句.......39 概括.......40 第7章函数..........

    简明python教程

    Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可执行...

    简明python教程(chm)

    Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可...

    简明 Python 教程 中文版

    简明 Python 教程 中文版 无论您刚接触电脑还是一个有经验的程序员,本书都将有助您学习使用Python语言! Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。...

    python3简明教程.docx

    python3简明教程 Python3是一种高级编程语言,它具有简单易学、可读性强、功能强大等特点,因此在近年来越来越受到开发者的青睐。本文将为大家介绍Python3的... 函数和模块 Python3支持函数和模块的定义和调用。例如

    python简明教程.chm

    Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可...

    简明Python代码规范 Python编程规范 Python开发代码规范与标准 Python编程开发习惯 共13页.pdf

    简明Python代码规范 一、 执行 二、 编码 三、 注释 四、 格式 1. 缩进 2. 空格 3. 空行 4. 断行 五、 命名 1. 常量 2. 变量 3. 函数 4. 类 5. 模块 6. 包 7. 缩写 8. 特定命名方式 六、 语句 1. import 2. 赋值 3. ...

    python基础资料+教程+简明教程+学习资料

    教程包括了Python语言的基础语法、基本数据类型、控制结构、函数、模块、面向对象编程等方面的内容,可以帮助读者初步掌握Python的编程技能。在学习本教程之前,你需要具备一些基本的编程知识。例如,对于编程的概念...

    Python教程大全入门到实战

    Python 自定义函数的基本步骤 函数返回值 函数的参数 函数传值问题 匿名函数 迭代器和生成器 迭代 Python 迭代器 list 生成式(列表生成式) 生成器 迭代器和生成器综合例子 面向对象 面向对象的概念 类的定义和调用...

    Python学习教程:简明易懂的入门指南.pptx

    语法与基础知识 数据类型及操作 函数与面向对象编程 常用模块与库 目录 Python学习教程:简明易懂的入门指南全文共16页,当前为第2页。 01 语法与基础知识 Grammar and Fundamentals Python学习教程:简明易懂的...

    简明python代码规范.doc

    业界普遍认同 Python 的注释分为两种的概念,一种是由 # 开头的“真正的”注释,另一种是 docstrings。前者表明为何选择当前实现以及这种实现的原理和难点,后者表明如何使用这个包、模块、类、函数(方法),甚至...

    Python简明教程

    一个不错的Python入门教程... 1. 介绍 简介 Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用...

    Python3简明教程(中文版)_Swaroop

    清晰完整带目录书签,非常好的入门教程,简洁易懂的介绍了Python的基本语法。 1、2章:介绍、第3章 安装、第 4章 最初的步骤、第 5章 基础、第 6章 操作符和表达式、控制流、函数、模块、数据结构、面对对象编程、...

    Python基础教程(第3版)-201802出版-文字版

    久负盛名的 Python 入门经典针对 Python 3 全新升级十个出色的项目,让你尽快可以使用 Python 解决实际问题目录第 1章 快速上手:基础知识 ........................ 1 1.1 交互式解释器 .............................

    Python 语言程序设计

    书中采用了他所提出的已经经过实践检验的“基础先行”的方法,即在定义类之前,首先使用清晰简明的语言介绍基本程序设计概念,如选择语句、循环和函数;在介绍面向对象程序设计和GUI编程之前,首先介绍基本逻辑和...

    python参考书

    python简明教程,帮助python学习者快速入门,简单明了介绍python的常用函数,模块等

    Python语言程序设计 PDF版

    书中采用了他所提出的已经经过实践检验的“基础先行”的方法,即在定义类之前,首先使用清晰简明的语言介绍基本程序设计概念,如选择语句、循环和函数;在介绍面向对象程序设计和GUI编程之前,首先介绍基本逻辑和...

    详解Python中 sys.argv[]的用法简明解释

    给的都是简明python教程上那个一长串代码的例子,说看了就明白了,可我看得晕头转向的还是没真正明白,只知道“sys.argv[0]表示代码本身文件路径”这点,其实还是不明其意。后来经过大量努力,多方求教才真正明悟了...

    使用PDB简单调试Python程序简明指南

    在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): 复制代码 代码如下: $ vi d.py #!/usr/bin/python def main():  i, sum = 1, 0  for i in ...

    Python使用logging结合decorator模式实现优化日志输出的方法

    python内置的loging模块非常简便易用, 很适合程序运行日志的输出。 而结合python的装饰器模式,则可实现简明实用的代码。测试代码如下所示: #! /usr/bin/env python2.7 # -*- encoding: utf-8 -*- import logging ...

Global site tag (gtag.js) - Google Analytics