要素8、函数的创建与调用
函数是实现模块化编程的基本组件
Python使用def语句定义函数
def functionName(arguments):
suite
- 函数可以参数化,通过传递不同的参数来调用
- 每个Python函数都有一个返回值,默认为None,也可以使用“return value”明确定义返回值
- def语句会创建一个函数对象,并同时创建一个指向函数的对象引用
- 函数也是对象,可以存储在组合数据类型中,也可以作为参数传递给其他函数
callable()可用于测试函数是否可调用
Python有众多内置函数:
- dir(_ _ builtin _ _) 可查看所有内置函数,可用help()获取详细使用信息
- Python标准库拥有众多内置模块,这些模块拥有大量函数
- 导入模块使用import语句进行,后跟模块名称(不能指定模块文件名的后缀.py)
导入一个模块后,可以访问其内部包含的任意函数、类及变量
Python编程风格
注释:
- #:可以从一行的任何地方开始
续行:
- \:
- ”’:闭合操作符,单一语句跨多行,实现多行注释(3个引号)
代码组:
- 缩进相同的一组语句构成的一个代码块
- 首行以关键字开始,如if,while等,以冒号结束
- Python使用缩进来分割代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误
同一行放置多个语句:
- ; :以分号作为分隔符
模块:
- 每一个Python脚本文件都可以被当成是一个模块
- 模块里的代码可以是一段直接执行的脚本,也可以是一些类似库函数的代码从而可由别的模块执行导入(import)
标识符:
- 标识符是计算机语言中允许作为名字的有效字符串集合
- 其中有一部分是关键字,它们是语言的标识符,因此是保留字,不能用于其他用途
- Python还有称为“内建”的标识符集合,虽不是保留字,仍不推荐使用这些特别的名字
Python标识符:
- 第一个字符只能使用字母或下划线
- 余下的字符可以使用字母、数字或下划线
- 区分字符大小写
Python编程常见习惯
注释:
- 既不能缺少注释,亦要避免过渡注释
文档:
- Python允许通过_ _ doc_ _动态获得文档字串
缩进:
- 统一缩进4个字串
标识符名称:
- 见名知意
Python风格指南:
Python命名惯例:
- 以单一下划线开头的变量名(_x)不会被from module import*语句导入
- 前后有下划线的变量名(_ x _)是系统定义的变量名,对pythono解释器有特殊意义
- 以两个下划线开头但结尾没有下划线的变量名(__x)是类的本地变量
- 交互式模式下,变量名”_ “用于保存最后表达式的结果
主程序:
- 无论当前模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码
注意:
- 所有的模块都有能力执行代码
- 最高级别的Python语句(没有缩进的)在模块被导入时就会执行,无论是否真的需要执行
- 妥当的做法:除了那些真正需要执行的代码以外,所有的功能代码都通过函数建立,因此:
仅在主程序模块中编写大量的顶级可执行代码
用于被导入的模块只应该存在较少的顶级执行代码 - 每个模块都有一个名为_ _ name _ _的内建变量,此变量值会根据调用此模块的方式发生变化:
如果此文件被作为模块导入,则_ _ name _ _的值为模块名称
如果此文件被直接执行,则_ _ name _ _ 的值为” _ _ main _ _”