Python语法(二)——函数

文章目录

函数

一段可以被重复使用的代码片段

求数列的和, 不使用函数

python 复制代码
# 1.求1-100的和
sum = 0
for i in range(1, 101):
    sum += i
print(f'sum = {sum}')

# 2.求300-400的和
sum = 0
for i in range(300, 401):
    sum += i
print(f'sum = {sum}')

# 3.求1-1000的和
sum = 0
for i in range(1, 1001):
    sum += i
print(f'sum = {sum}')

这几组代码基本是相似的, 只有一点点差异. 可以把重复代码提取出来, 做成一个函数

python 复制代码
def calcSum(begin, end):
    sum = 0
    for i in range(begin, end + 1):
        sum += i
    return sum 

print(calcSum(1, 100))    # 5050
print(calcSum(300, 400))  # 35350
print(calcSum(1, 1000))   # 500500

语法格式

python 复制代码
# 创建函数/定义函数
def 函数名(形参列表):
	函数体
	return 返回值

# 调用函数/使用函数
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值

函数必须先定义, 再使用

python 复制代码
test3() # 还没有执行到定义, 就先执行调用了, 此时就会报错.

def test3():
	print('hello')

函数参数

在函数定义的时候, 可以在 ( ) 中指定形参,然后在调用的时候, 由调用者把实参传递进去.

这样就可以做到一份函数, 针对不同的数据进行计算处理

  • 一个函数可以有一个形参, 也可以有多个形参, 也可以没有形参
  • 一个函数的形参有几个, 那么传递实参的时候也得传几个. 保证个数要匹配

链式调用

把一个函数的返回值, 作为另一个函数的参数, 这种操作称为 链式调用

python 复制代码
# 判定是否是奇数
def isOdd(num):
	if num % 2 == 0:
		return False
	else:
		return True
		
result = isOdd(10)
print(result)

# 也可以简化写作
print(isOdd(10))

嵌套调用

一个函数里面可以嵌套调用任意多个函数

python 复制代码
def a():
	print("函数 a")
	
def b():
	print("函数 b")
	a()
	
def c():
	print("函数 c")
	b()
	
def d():
	print("函数 d")
	c()
	
d()
python 复制代码
def a():
	print("函数 a")
	
def b():
	a()
	print("函数 b")
	
def c():
	b()
	print("函数 c")
	
def d():
	c()
	print("函数 d")
	
d()

函数递归

递归是 嵌套调用 中的一种特殊情况, 即一个函数嵌套调用自己

python 复制代码
# 递归计算 5!
def factor(n):
	if n == 1:
		return 1
	return n * factor(n - 1)
	
result = factor(5)
print(result)

**注意: **

  • 存在递归结束条件. 比如 if n == 1就是结束条件. 当 n 为 1 的时候, 递归就结束了
  • 每次递归的时候, 要保证函数的实参是逐渐逼近结束条件的

变量作用域

python 复制代码
def getPoint():
	x = 10
	y = 20
	return x, y
	
x, y = getPoint()

在这个代码中, 函数内部存在 x, y, 函数外部也有 x, y.

但是这两组 x, y 不是相同的变量, 而只是恰好有一样的名字.


变量只能在所在的函数内部生效

python 复制代码
def getPoint():
	x = 10
	y = 20
	return x, y
	
getPoint()
print(x, y)

在不同的作用域中, 允许存在同名的变量

python 复制代码
x = 20

def test():
	x = 10
	print(f'函数内部 x = {x}')
	
test()
print(f'函数外部 x = {x}')

如果函数内部尝试访问的变量在局部不存在, 就会尝试去全局作用域中查找

python 复制代码
x = 20

def test():
	print(f'x = {x}')
	
test()
相关推荐
ELI_He9991 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_748236119 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头10617 分钟前
【C++指南】类和对象(九):内部类
开发语言·c++
老大白菜18 分钟前
Python 爬虫技术指南
python
Watermelo61721 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
古希腊掌管学习的神1 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人2 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香2 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J2 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB2 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python