函数的一个主要目的就是将需要多次执行的代码放在一起。一个函数主要分为三个部分。第一行是def语句,定义函数的名称。def语句之下的代码块是函数体。这段代码在函数调用时执行。而不是在函数第一次定义时执行。最后是函数调用。
在代码中,函数调用就是函数名后跟上括号,也许在括号之间有一些参数。这些参数会在调用函数的时候,传值入函数。保存在参数变量中的值,在函数返回后就丢失了。大多数参数是由它们在函数调用中的位置来识别的。而“关键字参数”是由函数调用时加在它们前面的关键字来识别的。某些函数有可选的关键字参数,在函数调用时可以指定。
返回值和return
一般来说,函数调用求值的结果,成为函数的“返回值”。
用def语句创建函数时,可以用return语句指定应该返回什么值。
如果在return语句中使用了表达式,返回值就是该表达式求值的结果。
也可以将返回值作为参数传递给另一个函数调用。
None是python中一个特殊的值,它表示没有值。它是NoneType数据类型的唯一值。
如果使用不带值的return语句,那么就返回None。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@server01
test
]
# cat return.py
import
random
def anyAnswer(anyNumber):
if
anyNumber==1:
return
'It is 1.'
elif
anyNumber==2:
return
'It is 2.'
elif
anyNumber==3:
return
'It is 3.'
r=random.randint(1,3)
print(anyAnswer(r))
[root@server01
test
]
# python3 return.py
It is 2.
[root@server01
test
]
# python3 return.py
It is 3.
|
局部和全局作用域
在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。
处于局部作用域的变量,被称为“局部变量”;处于全局作用域的变量,被称为“全局变量”。一个变量必是其中一种,不能既是局部的又是全局的。
当作用域被销毁时,所有保存在该作用域内的变量的值就被丢弃了。只有一个全局作用域,它在程序开始的时候创建。
一个函数被调用时,就创建了一个局部作用域。当该函数返回时,这个局部作用域就被销毁了。
▎使用规则:
①局部变量不能在全局作用域内使用
②局部作用域不能使用其他局部作用域内的变量
③全局变量可以在局部作用域中读取
④局部变量和全局变量的名称可以相同
如果需要再一个函数内修改全局变量,就使用global语句。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@server01
test
]
# cat value.py
def value1():
abc=1
return
abc
def value2():
global abc
abc=2
return
abc
abc=3
print(value1())
print(value2())
print(abc)
[root@server01
test
]
# python3 value.py
1
2
2
|
异常处理
在程序中遇到错误或异常,会意味着整个程序崩溃。通过异常处理,使程序能检测错误,处理它们,并继续运行。
错误可以由try和except语句来处理。那些可能出错的语句被放在try子句中。如果错误产生,程序执行就转到接下来的except子句开始处。
在函数调用中的try语句块,发生的所有错误都会被捕捉。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@server01
test
]
# cat devide1.py
def devide(number):
try:
return
100
/number
except ZeroDivisionError:
print(
'Error:Invalid argument.'
)
print(devide(10))
print(devide(0))
print(devide(20))
[root@server01
test
]
# python3 devide1.py
10.0
Error:Invalid argument.
None
5.0
[root@server01
test
]
# cat devide2.py
def devide(number):
return
100
/number
try:
print(devide(10))
print(devide(0))
print(devide(20))
except ZeroDivisionError:
print(
'Error:Invalid argument.'
)
[root@server01
test
]
# python3 devide2.py
10.0
Error:Invalid argument.
|