就像平时玩的积木,函数就是一个个成块的积木,可以组合你想要的任何形状。
Python的函数
函数的简单调用
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def printHello():
print("hello world!")
print("张盛东你来了")
printHello()
printHello()
可以看到上述我调用了两次printHello()
函数,另存为fun01.py
,执行效果如下:
G:Py>python fun01.py
hello world!
张盛东你来了
hello world!
张盛东你来了
函数传参
这里printHello(num)
中括号内的内容,用于传递参数(argument)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def printHello(num):
print("hello world!")
print("张盛东你来了")
print("带了",num,"个苹果")
printHello(3)
参数是可以传递多个,例如传递三个参数。如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def printHello(num,name):
print("hello world!")
print("张盛东你来了")
print("带了",num,"个苹果")
print("叫了",name,"这位好朋友一起来吃")
printHello(3,'胡轲')
返回值
定义一个函数,一般是有输入,处理过程,有输出。把它当做一个黑匣子,什么也看不清楚。然后输入几个值,返回一个结果。
计算圆形面积
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
def area_circle(r):
print("你传入的半径是",r)
S = math.pi*r**2
return S
r1 = 5
S1 = area_circle(r1)
print("半径为",r1,"的圆面积是",S1)
得到的结果如下:
G:Py>python fun04.py
你传入的半径是 5
半径为 5 的圆面积是 78.53981633974483
变量作用域
局部变量
何为局部变量,就是变量只能在函数内使用,如果在外面调用的话,直接会出错。就拿area_circle()
函数举例子。如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
def area_circle(r):
print("你传入的半径是",r)
S = math.pi*r**2
return S
r1 = 5
S1 = area_circle(r1)
print("半径为",r1,"的圆面积是",S1)
####调用局部的变量r
print(r)
另存为fun05.py
,执行效果如下:
G:Py>python fun05.py
你传入的半径是 5
半径为 5 的圆面积是 78.53981633974483
Traceback (most recent call last):
File "fun05.py", line 13, in <module>
print(r)
NameError: name 'r' is not defined ----->r是局部变量,不能在全局使用。
全局变量
可以在整个范围内使用。继续修改area_circle()
函数。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
###### 这里r1是全局变量。
def area_circle(r):
print(r1,"函数内的全局变量")
print("你传入的半径是",r)
S = math.pi*r**2
return S
r1 = 5
S1 = area_circle(r1)
print(r1,"函数外的全局变量")
print("半径为",r1,"的圆面积是",S1)
很神奇的时候,函数内也可以读取r1
的变量。效果如下:
G:Py>python fun06.py
5 函数内的全局变量
你传入的半径是 5
5 函数外的全局变量
半径为 5 的圆面积是 78.53981633974483
现在我们来修改这个,全局的函数变量会出现什么效果。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
###### 这里r1是全局变量。
def area_circle(r):
r1 =10
print("函数内的全局变量", r1)
print("你传入的半径是",r)
S = math.pi*r**2
return S
r1 = 5
S1 = area_circle(r1)
print(r1,"函数外的全局变量")
print("半径为",r1,"的圆面积是",S1)
另存为fun07.py
,看看效果
G:Py>python fun07.py
函数内的全局变量 10 ---->函数内,修改的不能带出
你传入的半径是 5
5 函数外的全局变量 ---->函数外,r1还是5.
半径为 5 的圆面积是 78.53981633974483