主要学习了Python语言中的函数相关的内容,依然是基础知识。

函数(Functions)是指可重复使用的程序片段。

def定义函数

很简单,示例程序块如下:

1
2
3
4
5
def say_hello():
print('hello world')

say_hello()
say_hello()

形参(Parameters)与实参(Arguments)

在定义函数时给定的名称称作“形参”(Parameters),在调用函数时你所提供给函数的值称作“实参”(Arguments)。 示例程序块如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
def print_max(a,b):
if a>b:
print(a,'is maximum')
elif a==b:
print(a,'is equal to',b)
else:
print(b,'is maximum')

print_max(3,4) #实参

x = 5
y = 7
print_max(x,y) #形参

局部变量(Local variables)与全局变量(Global variables)

很简单,示例程序块如下:

  • 局部变量(Local variables)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    x = 50

    def func(x):
    print('x is',x)
    x = 2
    print('Changed local x to',x)

    func(x)
    print('x is still',x)
  • 全局变量(Global variables)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    x = 50

    def func():
    global x

    print('x is',x)
    x = 2
    print('Changed global x to',x)

    func()
    print('value of x is',x)

注意

  1. global 语句用以声明 x 是一个全局变量——因此,当我们在函数中为 x 进行赋值时,改动将影响到我们在主代码块中使用的 x 的值。
  2. 可以在同一句 global 语句中指定不止一个的全局变量,例如 global x, y, z 。

参数的设定

默认参数值

示例程序块如下:

1
2
3
4
5
def say(message,times=1):
print(message * times)

say('Hello')
say('World',5)

注意

  1. 默认参数值是常数,不可变;
  2. 只有那些位于参数列表末尾的参数才能被赋予默认参数值,如def func(a, b=5)有效,但def func(a=5, b)无效。

关键字参数(Keyword Arguments)

Python使用命名(关键字)而非位置(一直以来我们所使用的方式)来指定函数中的参数,优点如下:

  1. 不再需要考虑参数的顺序,函数的使用将更加容易;
  2. 可以只对那些我们希望赋予的参数以赋值,而其它参数为默认参数值。

示例程序块如下:

1
2
3
4
5
6
def func(a,b=5,c=10):
print('a is',a,'and b is',b,'and c is',c)

func(3,7)
func(25,c=24)
func(c=50,a=100)

可变参数

在Python中,可变参数用于使参数数量是可变的。

示例程序块如下:

1
2
3
4
5
6
7
8
9
10
11
12
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))

注意

  1. 当声明一个诸如*param的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇集成一个称为param的元组(Tuple);
  2. 当声明一个诸如**param的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个名为param的字典(Dictionary)。

return语句

return语句用于从函数中返回,也就是中断函数。我们也可以选择在中断函数时从函数中返回一个值。
示例程序块如下:

1
2
3
4
5
6
7
8
9
def maximum(x,y):
if x>y:
return x
elif x==y:
return 'The numbers are equal'
else:
return y

print(maximum(2,3))

注意

  1. 如果return语句没有搭配任何一个值则代表着返回NoneNone在Python中一个特殊的类型,代表空;
  2. 每一个函数都在其末尾隐含了一句return None,除非你写了你自己的return语句。

DocStrings

DocStrings的全称是文档字符串(Documentation Strings)。它的主要作用是帮助更好地记录程序并使之更加容易理解,简单来说,相当于一个程序的说明书的功能。
示例程序块如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def print_max(x,y):
'''Prints the maximum of two numbers.
The two values must be integers.'''

x=int(x)
y=int(y)

if x>y:
print(x,'is maximum')
else:
print(y,'is maximum')

print_max(3,5)
print(print_max.__doc__)

注意

  1. 函数的第一行逻辑行中的字符串是该函数的文档字符串(DocString)
  2. 文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束,第二行为空行,后跟的第三行开始是任何详细的解释说明;
  3. 应尽可能在所有重要功能的所有文档字符串中都遵循这一约定,以便于程序的理解和运行;
  4. 可以通过使用函数的__doc__(注意其中的双下划线)属性(属于函数的名称)来获取函数print_max的文档字符串属性;
  5. 自动化工具可以以这种方式检索你的程序中的文档,应该为编写的所有重要的函数配以文档字符串。