1.理论知识
a.函数的定义
功能的代码,封装一个独立的模块
b.函数的使用
封装函数,调用函数
c.函数的作用
提高代码效率
d.函数的语法
def 函数名(参数,参数):
逻辑代码
return
调用:函数名()
e.函数的调用
函数名():调用函数才会被执行
2.演练基础
a.输出3个hello world
def say_hello():
print('hello world')
print('hello world')
print('hello world')
say_hello() 输出结果:hello world hello world hello world
b.实现两个数字相加(基础版)
def sum():
a=10
b=40
c=a+b
print(c)
sum() 输出结果:50
c.实现两个数字相加(优化版)
def sum(a,b):
c = a + b
print(c)
a=sum(1,2) 输出结果:3
d.函数返回值:return
a.语法规则
def 函数名(参数,参数):
逻辑代码
return
调用:函数名()
b.实例演示
def sum(a,b):
c = a + b
return c
a = sum(1, 2)
print(a) 输出结果:3
e.函数空函数:pass
作用:写了函数未写逻辑代码,让你执行程序不报错
def empty():
pass
f.函数的参数
a.必须参数(位置参数)
特点:一定要传参,位置一定要相同,个数一定要一样
def sum(a,b):
return a+b
c=sum(1,2)
print(c) 输出结果:3
b.关键字参数
特点:命名参数的顺序可以不同
def person(name, age):
return '我是{},今年{}岁'.format(name, age)
d = person(age='9', name='晓华')
print(d) 输出结果:我是晓华,今年9岁
c.默认参数
def person(name=None, age='12'):
return '我是{},今年{}岁'.format(name, age)
d = person(name='秋水')
print(d) 输出结果:我是秋水,今年12岁
d.两参存在
特点:若必须参数和默认参数同时存在,必须参数在前,默认参数在后面
def person(age,name=None):
return '我是{},今年{}岁'.format(name, age)
d = person(name='晓华',age=18)
print(d) 输出结果:我是晓华,今年18岁
f.不定长传参
a.规则:不知道有多少个参数??? 在参数前面加个* 或者加个**
加一个* 把传进来的参数放在元组中去
加两个** 把传进来的参数放在字典中去
*args和**kwargs(不定长参数)
*args:表示的就是将实参中按照位置传值,多出来的值都给args,且以元组的方式呈现。*是解析元组
**kwargs:表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现。**是解析字典
b.加一个* 把传进来的参数放在元组中间去 *名字可以随意取 args
def a1(*args):
print(*agrs) 输出结果:小明 小老板 消化
print(args) 输出结果:('小明', '小老板', '消化')
a1('小明','小老板','消化')
c.知道有多少个参数要传,参数传入顺序规则:必须参数(位置参数) 默认参数 不定长参数
def post(url,data=None,*args):
pass
d.特殊示例:要求*后面传的参数 要带上命名(如带:sex)
def test1(name,age,*,sex):
return '我的名字是:{},今年{}岁,性别为:{}'.format(name,age,sex)
c=test1('晓华',22,sex='男')
print(c) 输出结果:我的名字是:晓华,今年22岁,性别为:男
e.若*args和**kwargs都存在函数参数中,遵守*args在前 **kwargs在后
def test(*args,**kwargs):
print(*args) 输出结果:晓华 22
print(args) 输出结果:('晓华', 22)
print(kwargs) 输出结果:{'name': '千纸鹤', 'age': 22}
test('晓华',22,name='千纸鹤',age=22)
f.解包:**字典的包
1、a=2,b=3,c=4 解包成 {'a':2,'b':3,'c':4}
加两个**把传进来的参数放在字典中间去
def test1(**kwargs):
print(kwargs)
test1(a=2,b=3,c=4) 输出结果:{'a': 2, 'b': 3, 'c': 4}
2、{'a':2,'b':3,'c':4} 解包成 a=3,b=4,c=4
*是拿到a,b,c
def test2(a,b,c):
print(a,b,c)
d={'a':2,'b':3,'c':4}
test2(*d) 输出结果:a b c
**拿到2,3,4
def test2(a,b,c):
print(a,b,c)
d={'a':2,'b':3,'c':4}
test2(**d) 输出结果:2 3 4
g.函数的嵌套
def test1():
print('-'*5)
def test2():
print('*'*5)
print('+'*5)
test1()
print('='*5)
test2()
输出结果:
*****
+++++
-----
=====
h.匿名函数(Lanbda)
a.语法规则
语法:lambda 参数,参数:表达式
特性:本身自带返回
b.示例
sum=lambda a,b:a+b
print(sum(1,2)) 输出结果:3
i.三目运算(了解)
a.语法规则
语法:满足条件的内容 if 判断条件 else 不满足条件的内容
特性:if语法的简写 写在一行
b.普通写法
x=int(input('请输入第一个数字:'))
y=int(input('请输入第二个数字:'))
if x>y:
print('打印第一个数字{}'.format(x))
else:
print('打印第二个数字{}'.format(y))
c.三目写法
x=int(input('请输入第一个数字:'))
y=int(input('请输入第二个数字:'))
print('打印第一个数字{}'.format(x)) if x>y else print('打印第二个数字{}'.format(y))
j.推导式(了解)
a.for循环的一种写法
b.列表推导式[表达式 :for xx in range()]
d=[xx for xx in range(5)]
print(d) 输出结果: [0, 1, 2, 3, 4]
c.字典推导式{表达式:表达式 :for xx in range()}
d=[{xx:xx+1} for xx in range(5)]
print(d) 输出结果: [{0: 1}, {1: 2}, {2: 3}, {3: 4}, {4: 5}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现