Python函数

1、函数(Functions)

  函数(Functions)是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是所谓的调用(Calling)函数。
函数可以通过关键字 def 来定义。这一关键字后跟一个函数的标识符名称,再跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾,结束这一行。随后而来的语句块是函数的一部分。

function
def say_hello():
# 该块属于这一函数
print('hello world')
# 函数结束
say_hello() # 调用函数

2、函数参数(Arguments)

  函数可以获取参数,这个参数的值由你所提供,借此,函数便可以利用这些值来做一些事情。这些参数与变量类似,这些变量的值在我们调用函数时已被定义,且在函数运行时均已赋值完成。

  函数中的参数通过将其放置在用以定义函数的一对圆括号“()”中指定,并通过逗号“,”予以分隔。当我们调用函数时,我们以同样的形式提供需要的值。要注意在此使用的术语——在定义函数时给定的名称称作 形参 (Parameters),在调用函数时你所提供给函数的值称作 实参 (Arguments)。

Arguments
def func(x,y): #定义函数时给定形参
print (x+y) #函数语句
#函数结束
func(x,y) #调用函数时给定实参

3、变量的作用域(Scope)

局部变量(Local Varibles)

  当你在一个函数的定义中声明变量时,它们不会以任何方式与身处函数之外但具有相同名称的变量产生关系,也就是说,这些变量名只存在于函数这一 局部 (Local)。这被称为变量的 作用域 (Scope)。所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始。

global语句

  如果你想给一个在程序顶层的变量赋值(也就是说它不存在于任何作用域中,无论是函数还是类),那么你必须告诉 Python 这一变量并非局部的,而是 全局 (Global)的。我们需要通过 global 语句来完成这件事。因为在不使用 global 语句的情况下,不可能为一个定义于函数之外的变量赋值。

  你可以使用定义于函数之外的变量的值(假设函数中没有具有相同名字的变量)。然而,这种方式 不会受到鼓励而且应该避免 ,因为它对于程序的读者来说是含糊不清的,无法弄清楚变量的定义究竟在哪。而通过使用 global 语句便可清楚看出这一变量是在最外边的代码块中定义的。

4、关键字参数(Keyword Arguments)

  如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是 关键字参数 (Keyword Arguments)——我们使用 命名 (关键字)而非 位置 (一直以来我们所使用的方式)来指定函数中的参数。

funtion_keyword.py
def func(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)

func(3, 7) #参数a获得值3,参数b获得值7
func(25, c=24) #参数a获得值25,参数b使用默认值5,参数c获得值24
func(c=50, a=100) #参数c获得值50,参数b使用默认值5,参数a获得值100

5、可变参数(VarArgs Parameters)

  定义的函数里面能够有任意数量的变量,也就是参数数量是可变的,这可以通过使用星号来实现。
  当我们声明一个诸如 *param 的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇集成一个称为“param”的元组(Tuple)。
  当我们声明一个诸如 **param 的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个名为 param 的字典(Dictionary)。

function_varargs.py
def total(a=5, *numbers, **phonebook):
print('a', a)

for single_item in numbers: #遍历元组中的所有项目
print('single_item', single_item)

for first_part, second_part in phonebook.items(): #遍历字典中的所有项目
print(first_part,second_part)

print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))

6、return语句

  return 语句用于从函数中 返回 ,也就是 中断函数 。我们也可以选择在中断函数时从函数中 返回一个值

func_return.py
def maximum(x, y):
if x > y:
return x
elif x == y:
return 'The numbers are equal'
else:
return y

print(maximum(2, 3))

7、文档字符串(DocStrings)

  Python 有一个甚是优美的功能称作文档字符串(Documentation Strings),在称呼它时通常会使用另一个短一些的名字docstrings。DocStrings 是一款你应当使用的重要工具,它能够帮助你更好地记录程序并让其更加易于理解。