前言:
目录
(一)函数是什么
(二)语法格式
(三)函数参数
(四)函数返回值
(五)变量作用域
(六)函数执行过程
(七)链式调用
(八)嵌套调用
(九)函数递归
(十)参数默认值
(十一)关键字参数
总结
编程中的函数和数学中的函数有一定的相似之处
数学上的函数, 比如 y = sin x , x 取不同的值, y 就会得到不同的结果.
接下来,我以几个简单的代码为例带大家认识函数:
③ 求 1 - 1000 的和
可以发现, 这几组代码基本是相似的, 只有一点点差异. 可以把重复代码提取出来, 做成一个函数
实际开发中, 复制粘贴是一种不太好的策略. 实际开发的重复代码可能存在几十份甚至上百份.
一旦这个重复代码需要被修改, 那就得改几十次, 非常不便于维护
代码示例: 求 数列 的和, 使用函数
【说明】
calcSum(beg, end)
,该函数计算从 beg
到 end
范围内所有整数的总和,并将结果打印出来;函数是用于封装可重用代码块的基本编程概念。在Python中,函数可以接收输入参数并返回一个或多个值。函数的定义使用 def
关键字,后跟函数名、参数列表和冒号,然后是函数体。
def 函数名(形参列表):
函数体
return 返回值
函数名(实参列表)
返回值 = 函数名(实参列表)// 不考虑返回值
// 考虑返回值
在函数定义的时候, 可以在 ( ) 中指定 "形式参数" (简称 形参), 然后在调用的时候, 由调用者把 "实际参数"(简称 实参) 传递进去.
这样就可以做到一份函数, 针对不同的数据进行计算处理.
考虑前面的代码案例:
def calcSum(beg, end):
sum = 0
for i in range(beg, end + 1):
sum += i
print(sum)
# 调用函数
calcSum(1, 100)
calcSum(300, 400)
calcSum(1, 1000)
【说明】
实参和形参之间的关系, 就像签合同一样.
甲方, 乙方 这就相当于形参.张三, 李四 就是实参
def 签合同(甲方, 乙方):
合同内容....
签合同('张三', '李四')
签合同('张三', '王五')
签合同('张三', '赵六')
注意:
函数的参数可以视为是函数的 " 输入 ", 则函数的返回值 , 就可以视为是函数的 " 输出 " .
def calcSum(begin ,end):
sum = 0
for i in range (begin ,end+1):
sum += i
print(sum)
calcSum(1,100)
【解释说嘛】
calcSum(1, 100)
会计算从1到100的所有整数的和,并将结果打印出来。上述代码可以转换成 下述这样:
def calcSum(begin ,end):
sum = 0
for i in range (begin ,end+1):
sum += i
return sum
result = calcSum(1,100)
print(result)
【解释说明】
这两个代码的区别就在于 , 前者直接在函数内部进行了打印, 后者则使用 return 语句把结果返回给函数调用者, 再由调用者负责打印 .
接下来,我在举几个例子带大家去瞧瞧:
# 判定是否是奇数
def isOdd(num):
if num % 2 ==0:
return False
else:
return True
result = isOdd(10)
print(result)
# 判定是否是奇数
def isOdd(num):
if num % 2 ==0:
return False
return True
result = isOdd(19)
print(result)
【解释说明】
def getpoint():
x=10
y=20
return x, y
a ,b = getpoint()
def getPoint():
x = 10
y = 20
return x, y
_, b = getPoint()
在Python中,变量的作用域指的是变量在程序中的可见性和访问范围。
Python中有以下几种变量作用域:
全局作用域:在函数外部定义的变量拥有全局作用域,可以在整个程序中的任何位置进行访问。这些变量通常被称为全局变量。
局部作用域:在函数内部定义的变量拥有局部作用域,只能在函数内部进行访问。这些变量通常被称为局部变量,它们的作用域限定在函数内部。
接下来,通过代码给大家演示一下:
x = 10 # 全局变量
def func():
y = 5 # 局部变量,只在函数内部可见
print("x inside func:", x) # 可以访问全局变量x
print("y inside func:", y)
func()
print("x outside func:", x) # 可以在函数外部访问全局变量x
print("y outside func:", y) # 抛出 NameError,无法访问局部变量y
输出展示:
【解释说明】
func()
内部定义了一个局部变量y
,它只能在函数内部访问。而全局变量x
可以在函数内外访问。嵌套作用域:当函数嵌套定义时,内部函数可以访问外部函数的变量,这些被内部函数访问的变量位于嵌套作用域中。
代码展示:
def outer():
x = 10 # 外部函数的局部变量
def inner():
nonlocal x # 声明x来自于嵌套作用域
x += 5 # 修改外部函数的局部变量x
print("x inside inner:", x) # 打印修改后的x
inner()
print("x inside outer:", x) # 打印外部函数的x
outer()
输出展示:
【解释说明】
inner()
可以访问外部函数outer()
的局部变量x
,通过使用nonlocal
关键字可以在内部函数中修改外部函数的局部变量。内置作用域:Python中有一些内置的名称,如print
、len
等,它们存在于内置作用域中,可以在任何地方直接访问。
代码展示:
import math
def calculate_circle_area(radius):
area = math.pi * radius ** 2 # 内置函数math.pi处于内置作用域
return area
result = calculate_circle_area(10)
print("Circle area:", result)
输出展示:
【解释说明】
math.pi
是内置函数math
提供的常量,它属于内置作用域,可以在任何地方直接访问和使用。
Python的变量作用域遵循以下规则:
代码展示:
x = 20
def test():
x = 10
print(f'函数内部 x = {x}')
test()
输出展示:
代码展示:
x = 20
def test():
print(f'x = {x}')
test()
输出展示:
global
关键字将变量声明为全局变量。例如:代码展示:
x = 10 # 全局变量
def modify_global():
global x # 声明x为全局变量
x += 5 # 在函数内部修改全局变量
modify_global()
print(x)
输出展示:
【解释说明】
for i in range(1, 10):
print(f'函数内部 i = {i}')
print(f'函数外部 i = {i}')
输出展示:
【解释说明】
i
在循环结束后仍然存在并保留其最后一次迭代的值;i
的值将是循环结束时的最后一个值,即 9。def test():
print("执行函数内部代码")
print("执行函数内部代码")
print("执行函数内部代码")
print("1111")
test()
print("2222")
test()
print("3333")
输出展示:
我们以上述判断奇偶数的代码为例:
# 判定是否是奇数
def isOdd(num):
if num % 2 == 0:
return False
else:
return True
result = isOdd(10)
print(result)
def test():
print("执行函数内部代码")
print("执行函数内部代码")
print("执行函数内部代码")
一个函数里面可以嵌套调用任意多个函数
函数嵌套的过程是非常灵活的。我们可以看以下代码示例:
def a():
print("函数 a")
def b():
print("函数 b")
a()
def c():
print("函数 c")
b()
def d():
print("函数 d")
c()
d()
def a():
num1 = 10
print("函数 a")
def b():
num2 = 20
a()
print("函数 b")
def c():
num3 = 30
b()
print("函数 c")
def d():
num4 = 40
c()
print("函数 d")
d()
嵌套调用是指在一个函数或方法的执行过程中,又调用了另一个函数或方法。嵌套调用可以允许我们在一个函数内部调用另一个函数来实现更复杂的功能。
下面是一个简单的示例来说明嵌套调用的概念:
def Func(n):
if n <= 0:
print("Countdown complete!")
else:
print(n)
Func(n - 1) # 在函数内部调用自身
Func(5)
【小结】
参数默认值是指在定义函数时为函数参数设置的默认值。当调用函数时,如果没有为相应的参数提供值,那么该参数将使用默认值作为其值。参数默认值可以使函数在不同场景中更加灵活和易用。
以下是一个示例来说明参数默认值的使用:
def add(x, y, debug=False):
if debug:
print(f'调试信息: x={x}, y={y}')
return x + y
print(add(10, 20))
print(add(10, 20, True))
输出展示:
【解释说明】
代码展示:
def add(x, debug=False, y):
if debug:
print(f'调试信息: x={x}, y={y}')
return x + y
print(add(10, 20))
输出展示:
【解释说明】
到此,关于python中函数的讲解便到此结束了。接下来,简单的回顾总结一下!!!
以上便是本期的全部内容,感谢大家的观看与支持!!!