函数基础和函数参数
课题:函数
'''学函数的目的:'''
# 不学函数
1、复杂度增大
2、组织结构不够清晰
3、可读性差
4、代码冗余
5、可扩展性差
# 学函数
1、使用函数可以提高编写的效率以及代码的重用
2、函数是带名字的代码块,随用随调
3、使用函数,程序编写,阅读,测试和修复都将更容易美观
知识点一:函数的定义
函数的作用就是避免重复造轮子
函数的作用 能够被重复调用,有入口也有出口的代码段
1、定义函数
def know_error(): # 函数名:见名知意
print('1')
print('2')
print('3')
print('4')
print('5')
know_error()
把独立功能的代码块封装到函数里面去,从而达到一个多次使用的效果
减少代码量,冗余 结构也比较清楚, 保持代码的一致性
def func():
pass # 省略的意思 没写完也不会报错
while True:
pass
return 返回 结果
def func()
return 1
func() # 不会被打印 函数的调用之后 执行了就会有一个结果
return # 后面跟的就是这个结果 会把结果保存给这个函数的调用
def func(a,b): 传值 (形参)
print('开始了')
result = a - b
return result
print('--结束--') # 遇到return 后面的都不会执行了 代表函数结束了 返回值都出来了呀 问题:函数里可有有多个renturn 吗 (选择执行的时候可有有多个)
a = func(10,5) 传值
print(a)
知识点二:函数的参数
def func(a,b):
print('开始了')
result = a - b
# return result
print('结果%d'%result)
print('--结束--')
num1 = int(input('数字:'))
num2 = int(input('数字:'))
func(num1,num2)
# 传到函数里面 进行计算
'''调用一定要写在定义的下面'''
if num1 == 'c':
break
1、必备参数
# 参数能够接受任意类型的对象
def func(a,b):
print('开始了')
result = a - b
return result
print('结果%d'%result)
print('--结束--')
func(180) # 报错
必备参数 你写了几个 就必须要传几个
2、默认参数
def func(a,b=160):
print('开始了')
result = a - b
return result
print('结果%d'%result)
print('--结束--')
func(180) # 报错
默认参数 你可以去传 如果传了 就拿你传的参数,入果没传 就按默认的参数去执行
# 问题 (b=160,a) 是否报错?
3、不定长参数
# 问题:传10个必备参数,可以定义10 我要100个呢?
# 不定长参数
def func(*args): 接受多个值 都是以元组接收的
print(args)
func(1,2,3,4,5,6,7,8,9)
def func(**kwargs) # 关键字传参
print(keargs)
func(a=1,b=2,c=3) 键等于值的形式
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,a = 1,b = 3)
# *位置参数 和 **关键字参数
a = 1 变量没有类型的 传什么就是什么 参数也是这样的
*(1,2,3,4) **{'a':4}
必备 默认 不定长(位置,关键字)
示例:
def func(a,b,c):
print('')
func(1,2,3) # 位置
func(a=1,b=2,c=3) # 关键字
func(1,b=2,c=3) ok
func(1,b=2,3) # 报错
知识点三:高级内置函数
内置函数--------------------------------------------
已经写好的一些函数 美观,强大
dir(__builtins__) 列表 built ins
72 个 __都是魔法方法
a = [1,2,3,4]
len(a) 长度
min(a) 小
max(a) 大
sorted(a) 排序
reversed(a)
list(reversed(a)) (逆序)
sum(a) 求和
bin(12) 2进制
oct(8) 8进制
hex(11) 16进制
ord('a') # 97 # ascii
ord('A') # 65
chr(97) # 'a'
chr(65) # 'A'
li = ['a','b','c','d']
enumerate(li)
list(enumerate(li)) 枚举 把索引返回出来
dict(enumerate(li)) 元素跟索引对应起来
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
start -- 下标起始位置。
li = ['a','b','c']
# enumerate(li)
a = list(enumerate(li,100))
print(a)
for i ,j in enumerate(li):
print(i,j)
a = '1+2+3'
eval(a) 转换成表达式执行
eval('a=1') # 报错
# 将字符串str当成有效的表达式来求值并返回计算结果。
b = 1
'b = 1'
exec() # 执行以string类型存储的Python代码
i = 3
j = 2
exec('um = i + j') # 返回值永远是空
print(um)
ans变量并没有显式的定义,但仍然可以在print函数中调用。这是exec语句执行了"um = i + j"中的代码,定义了sum变量。
i = 3
j = 2
exec('print(i + j)')
a = 'for i in range(5):print(i)'
exec(a)
filter()
def func(x):
return x > 10
li = [2,5,8,10,22,44]
list(filter(func,li)) 过滤函数,过滤条件
map()
def func2(num):
return num * 10
l2 = [1,2,3,4,5]
map(func2,l2) 函数对象 , 可迭代对象
list(map(func2,l2))
zip()
t1 = [1,2,3,4]
t2 = ['a','b','c','d']
list(zip(t1,t2))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App