🤔
函数
函数是指可重复使用的程序片段。它们允许你为某个代码块赋名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是所谓的调用函数。
- 函数可以通过关键字 def 来定义:
1
2
3def say():
print('Hello, World')
say()
函数参数
函数可以获取参数,这个参数的值由你所提供,借此,函数便可以利用这些值来做一些事情。这些参数与变量类似,这些变量的值在我们调用函数时已被定义,且在函数运行时均已赋值完成。在定义函数 时给定的名称称作“形参”,在调用函数时你所提供给函数的值称作“实参”。1
2
3
4
5
6def reaArea(a, b):
s = a * b
return s
x = 10
y = 5
print(reaArea(x, y))
以上为计算机型面积的函数,调用reaArea函数时,我们以变量作为实参来调用函数,使得x的值赋给行参a、y的值赋给行参b,并返回两者的乘积。
- 函数参数可以设置默认参数值,如:
def reaArea(a , b = 5):
有时可能想定义的函数里面能够有任意数量的变量,也就是参数数量是可变的,这可以通 过使用星号来实现
1 | def func(a = 7, *b, **c): |
- 输出:
a 10 b 9 b 8 b 7 b 6 b 5 x 1 y 2 z 3
当声明一个如*a 星号参数时,从此处开始直到结束的所有位置参数都将被收集并汇集成一个元组。
类似地,当声明一个诸如 **b 的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个字典。
局部变量
在一个函数的定义中声明变量时,它们不会以任何方式与处于函数之外但具有相同名称的变量产生关系,也就是说,这些变量名只存在于函数这一局部。这被称为变量的作用域。所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始。1
2
3
4
5
6
7n = 7
def func(n):
print("1:", n)
n = 10
print("2:", n)
func(n)
print("3:", n)
- 输出:
1: 7 2: 10 3: 7
第一次打印出存在于函数块第一行名为 n 的值时,使用的是在函数声明之上的主代码块中声明的这一参数的值。
接着,将10赋值给n。n是我们这一函数的局部变量。因此,当改变函数中n的值的时候,主代码块中的n则不会受到影响。
最后一句 print 语句,打印出主代码块中定义的n的值,由此确认它不受先前调用的函数中的局部变量的影响。
global语句
如果想给一个在程序顶层的变量赋值(也就是说它不存在于任何作用域中,无论是函数还是类),那么你必须告诉程序这一变量并非局部的,而是全局的。我们需要通过global语句来完成这件事。因为在不使用global语句的情况下,不可能为一个定义于函数之外的变量赋值。
1 | n = 7 |
- 输出:
1: 7 2: 10 3: 10
global语句用以声明n是一个全局变量,因此,当我们在函数中为n进行赋值时,这一改动将影响到我们在主代码块中使用的n的值
return 语句
return 语句用于从函数中返回,也就是中断函数。我们也可以选择在中断函数时从函数中返回一个值。1
2
3
4
5
6def reaArea(a, b):
s = a * b
return s
x = 10
y = 5
print(reaArea(x, y))
如果 return 语句没有搭配任何一个值则代表着返回 None 。 None 在 Python 中一个特殊的类型,代表空。