- 函数形参
函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。 参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语——函数中的参数名称为 形参 而你提供给函数调用的值称为实参 。
例:使用形参
#! /usr/bin/python def printMax(a,b):
if a > b:
print a , "is maximum"
else:
print b , "is maximum" printMax(3,4)
结果:
spdbmadeMacBook-Pro:python spdbma$ ./test.py
4 is maximum
- 局部变量
当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。 它如何工作 在函数中,我们第一次使用x的 值 的时候,Python使用函数声明的形参的值。 接下来,我们把值2赋给x。x是函数的局部变量。所以,当我们在函数内改变x的值的时候,在主块中定义的x不受影响。 在最后一个print语句中,我们证明了主块中的x的值确实没有受到影响。
#! /usr/bin/python def func(x):
print 'x is ',x
x = 2
print 'changed local x to ',x x = 50
func(x)
print 'x is still',x
结果:
spdbmadeMacBook-Pro:python spdbma$ ./test.py
x is 50
changed local x to 2
x is still 50
- 默认参数值
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
#! /usr/bin/python def say(message,times=1):
print message * times say('hello ')
say ('hello ',5)
结果
spdbmadeMacBook-Pro:python spdbma$ ./test.py
hello
hello hello hello hello hello
解析:名为say的函数用来打印一个字符串任意所需的次数。如果我们不提供一个值,那么默认地,字符串将只被打印一遍。我们通过给形参times指定默认参数值1来实现这一功能。 在第一次使用say的时候,我们只提供一个字符串,函数只打印一次字符串。在第二次使用say的时候,我们提供了字符串和参数5,表明我们想要 说 这个字符串消息5遍。
- 关键参数
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
#! /usr/bin/python def func(a, b=5, c=10):
print 'a is ',a, ' and b is ',b, ' and c is ',c func (3,7)
func (3,7,9)
func (25,c = 24)
func (c =50,a = 100)
结果:
spdbmadeMacBook-Pro:python spdbma$ ./test.py
a is 3 and b is 7 and c is 10
a is 3 and b is 7 and c is 9
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
解析:名为func的函数用来打印一个字符串任意所需的次数。如果我们不提供一个值,那么默认地,字符串将只被打印一遍。我们通过给形参times指定默认参数值1来实现这一功能。 在第一次使用say的时候,我们只提供一个字符串,函数只打印一次字符串。在第二次使用say的时候,我们提供了字符串和参数5,表明我们想要 说 这个字符串消息5遍。
- return语句
return语句用来从一个函数 返回 即跳出函数。我们也可选从函数 返回一个值 。
#! /usr/bin/python def maximum(x , y):
if x > y:
return x
else:
return y print maximum(2,3)
结果:
spdbmadeMacBook-Pro:python spdbma$ ./test.py
3
解析:maximum函数返回参数中的最大值,在这里是提供给函数的数。它使用简单的if..else语句来找出较大的值,然后 返回 那个值。
- DocStrings
Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!
#! /usr/bin/python def printMax (x,y):
'''Prints the maximum of two numbers.
The two values musb be integers.''' x = int (x)
y = int (y) if x > y :
print x , "is maximum"
else:
print y , "is maximum" printMax(3,5)
#print printMax.__doc__
结果:
spdbmadeMacBook-Pro:python spdbma$ ./test.py
5 is maximum
Prints the maximum of two numbers.
The two values musb be integers.
解析:
在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,DocStrings也适用于模块和类,我们会在后面相应的章节学习它们。 文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。
[完]