注意要在Python代码第一行表明编码方式,下面的程序主要是演示一下可以写一个包含多个参数,并且参数可以指定默认值。
还要看到函数参数具有一定的作用域。
代码:
#! coding:utf-8
# 定义包含若干参数的函数
# 为一个或多个参数指定默认值
def ask_ok(prompt,retries=4,complaint='Yes or no,please!'):
# 其中prompt为必选参数,complaint和retries为可选参数'''
while True:
ok=input(prompt)
# in关键字用于检测字符串是否属于某个字符串数组
if ok in ('y','ye','yes'):
return True
if ok in ('n','no','nop','nope'):
return False
retries=retries-1
# 超过四次询问后,将抛出异常,并且中断程序,输出抱怨语句
if retries<0:
raise OSError('uncooperative user')
print(complaint)
# 测试
ask_ok('do you want a milk?')
# 下面这个函数默认值在函数定义作用域被解析
# 注意:默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例
i=5
def f(arg=i):
print(arg)
i=6
f()
f(4)
运行结果: