函数(function)就是程序中的子程序,类似于黑盒子。函数将完成某一功能的代码组织到一起,目的是为了复用。
使用函数也可以方便调试错误。
带参数的DEF语句
def function_name(parameters):
code block
函数定义中的参数称为形参(parameters),调用函数时传递的参数称为实参(arguments)
参数的传递都是By Value的。
返回值和RETURN 语句
return value | expression
以下函数定义可根据条件返回不同数据类型,虽然语法没错,但不建议:
>>> def getAnswer(answerNumber):
... if answerNumber == 1:
... return 'It is certain'
... elif answerNumber == 2:
... return 2
空值
Python中的空值用None
表示,类似于其它语言中的Null
或Nil
。
空值表示未赋值,缺少值。
没有返回值的函数如print()的返回值为None
,实际上Python为这些函数添加了return None语句,另外,不带参数的return语句等同于return None。
KEYWORD 参数和PRINT() 函数
函数的参数通常按位置传递,但也可以用keyword参数指定,例如:function_name(keyword=argument, keyword=argument...)
keyword参数通常用于函数的可选参数。
看一下print函数的定义:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
以下为示例:
>>> print('cats', 'dogs', 'mice')
cats dogs mice
>>> print('cats', 'dogs', 'mice', end='!\n')
cats dogs mice!
# 默认的print类似于echo,下面这句类似echo -n
>>> print('Hello', end='')
>>> print('cats', 'dogs', 'mice', sep = '|')
cats|dogs|mice
调用栈
函数调用类似于堆栈,后进先出。
本地和全局范围
函数内部的变量称为本地变量,有效范围在本地(函数内部);函数外部的变量称为全局变量,有效范围是全局(整个程序)。
出范围后,变量就变为无效(可以认为被销毁,生命周期结束)。
一些原则:
- 全局范围的代码不能访问本地变量
- 本地范围的代码可以访问全局变量,自身的本地变量,但不能访问其它函数的本地变量
- 不同有效范围的变量可以重名,但应避免
GLOBAL语句
如果在函数中,变量没有赋值也没有通过参数传递而直接使用,那么此变量为全局变量。
如果想在函数中修改全局变量,必须使用global语句,例如:
def spam():
global eggs
eggs = 'spam'
异常处理
这里的异常指exception,可以用try...except
处理。例如:
try:
code block for operation
except EXCEPTION:
code block for handle exception
小程序: ZIGZAG
代码zigzag.py
如下:
import time, sys
indent = 0 # How many spaces to indent.
indentIncreasing = True # Whether the indentation is increasing or not.
try:
while True: # The main program loop.
print(' ' * indent, end='')
print('********')
time.sleep(0.1) # Pause for 1/10 of a second.
if indentIncreasing:
# Increase the number of spaces:
indent = indent + 1
if indent == 20:
# Change direction:
indentIncreasing = False
else:
# Decrease the number of spaces:
indent = indent - 1
if indent == 0:
# Change direction:
indentIncreasing = True
except KeyboardInterrupt:
sys.exit()
唯一需要解释的是KeyboardInterrupt
异常表示按键Ctrl+C
。
单词
meandering - 蜿蜒曲折,迂回
upshot - 最后结果,结局