Python之函数篇

  • 函数形参

函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。 参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语——函数中的参数名称为 形参 而你提供给函数调用的值称为实参 。

例:使用形参

#! /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也适用于模块和类,我们会在后面相应的章节学习它们。 文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。

 

 

[完]

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/tdcqma/p/5266790.html