在之前的章节中, 我们已经多次使用过函数了.
接下来, 我们将创建属于自己的函数,
是的, 在实际开发过程中, 一些需求如果找不到别人做好的函数, 那就得自己写(自己动手, 丰衣足食).
其语法如下
def 函数名(参数1, 参数2, ...):
子语句1
子语名2
...
return 一个处理结果
# 函数里面的所有代码也称为函数体
清空a.py的内容, 写入以下代码 (并设断点在第一行且以调试模式运行)
# 创建一个无需参数的函数, 无返回结果
def say12():
print(1)
print(2)
# 创建一个无需参数的函数, 有返回结果
def getPI():
return 3.1415926
# 创建一个需要1个参数的函数, 有返回结果
def getSumFrom100plus(value):
return 100 + value
# 创建一个需要2个参数的函数, 有返回结果
def sum(value1, value2):
a = value1
b = value2
return a + b
# 下面是调用我们自己写的函数
say12()
v = getPI()
print(v)
v = getSumFrom100plus(1)
print(v)
num1 = 1
num2 = 2
v = sum(num1, num2)
print(v)
你是不是发现在单步调试的时候, 代码跳进了函数的子语句, 执行完所有子语句后才返回主语句.
是的, 函数的执行原理就是这样.
衍生知识> 变量的作用域 (变量的有效范围)
清空a.py的内容, 写入以下代码 (并设断点在第一行且以调试模式运行)
# 1. 在主语句里创建的变量也称为[全局变量-Global], 即不管哪里的代码都能访问到它
# 2. 而在函数里创建的变量称为[本地变量-Local], 只能在函数里使用, 且出了函数体后就[销毁]了
# 3. 当[本地变量名]与[全局变量名]一样时, 就会产生冲突. 此时函数会自动屏蔽同名的全局变量, 如下
#
a1 = 100
def test1():
a1 = 200
print(a1)
test1()
print(a1)
# 如果你想在函数中使用全局变量, 则需要使用 global 关键字
a2 = 100
def test2():
global a2
print(a2)
a2 = 200 # 由于前面使用了global表明是全局变量a, 所以这里改的值是全局变量a的值
test2()
print(a2)
练习题1: 创建一个函数名为func1, 调用它会输出一段文字”hello world”
练习题2: 创建一个函数名为func2, 拥有一个参数a, 调用它会输出a减99后的值
练习题3: 创建一个函数名为func3, 拥有两个参数(a, b), 调用它会输出a乘b后的值
练习题4: 创建一个函数名为getRandomString, 拥有一个参数(a), 调用它会返回一个长度为a的随机字符串.