3.16学习笔记
函数的定义与调用
1.函数一定要遵循先定义后调用的原则
#其实就是生产出产品,才有产品可以去使用
2.函数在定义阶段只检测语法不执行代码
#相当于只对产品进行检测,但不会去使用产品
3.函数体代码只有在调用时候才执行
#产品不使用时,相当于放在库存里一样
调用函数的方式:函数名加括号 # 如果有参数则传递参数
4.函数名其实相当于是变量名指向的是内存中函数体代码所在的位置
#函数名相当于仓库的名字,让计算机寻找这个产品在哪里
# 定义函数
def func():
print('hello world')
函数的分类
主要分内置函数,自定义函数
1.内置函数 #(原厂出品)
python解释器提前定义好可以直接调用的函数
eg:len、open... # 如何查看代码的内部源码ctrl+鼠标左键
2.自定义函数 #(自己生产)
程序员自己编写的函数
2.1.无参函数
2.2.有参函数
2.3.空函数
#无参函数:在函数定义阶段括号内没有参数
def index():
print('色即是空 空即是色')
调用无参函数:括号内也不需要写参数
index()
#有参函数:在函数定义阶段括号内有参数>>>:类似于变量名
def index(a):
print('嘿嘿嘿 妹纸有事冲我来',a)
调用有参函数:在函数调用阶段括号内也必须传参数>>>:类似于变量值
index(123)
空函数:在定义阶段函数体代码是用pass或者...占位
def index():
pass
#空函数的作用
前期能够通过空函数快速的罗列出程序中大致的功能
让程序整体框架清晰 空函数大量的使用在项目前期的功能框架搭建
函数的返回值
# 函数的返回值其实就是在调用函数之后返回的结果
s = 'hello world'
res = len(s) # 将len函数的返回值赋值给变量res
print(res)
# 如何获取函数的返回值
变量名 = 函数调用
# 如何操作返回值
1.当函数体代码没有return关键字的时候 返回值是None
def index():
print('滴滴滴滴')
res = index()
print(res) # None
2.当函数体代码写了return但是没有跟任何值得时候 返回值也是None
def index():
print('滴滴滴滴')
return
res = index()
print(res) # None
3.当函数体代码写了return并且跟了数据 那么写什么就返回什么
如果写的是值那么直接返回值(任意数据类型)
如果写的是变量名那么返回变量名指向的值
def index():
print('滴滴滴滴')
name = 'zhangqiang'
return name
res = index()
print(res) # zhangqiang
4.return后面还可以跟多个值 逗号隔开 会自动组织成元组返回出去后
def index():
print('滴滴滴滴')
return 111,'滴滴滴滴',222
res = index()
print(res) # (111,'滴滴滴滴',222)
5.函数体代码遇到return会立刻结束函数运行
函数体代码里面写return相当于循环体代码里面写break
遇到了就立刻结束函数和循环的执行
函数的参数
1.函数的参数可以分为两大类
1.函数在定义阶段括号内写的参数
我们称之为'形式参数' 简称为>>>:形参
2.函数在调用阶段括号内写的参数
我们称之为'实际参数' 简称为>>>:实参
2.形参与实参的关系
形参类似于是变量名、实参类似于是变量的值
在调用函数的时候传入实参 会与形参临时绑定
函数运行结束之后自动解除绑定
位置参数
# 位置参数就是按照位置关系一一对应就好了,也是我们最最常用的,但是要注意的是各个参数必须按顺序对应。
def printstr(m,n):
print(m)
print(n)
return
printstr('第一个参数','第二个参数')
#输出
第一个参数
第二个参数
默认参数
默认参数及在函数的定义的时候就给了个默认值,在函数调用的时候可以不传这个默认参数。
def printint(m=1,n=100):
sum = 0
for i in range(m,n+1):
sum += i
print(sum)
return sum
#输出
5050
可变参数
可变参数是指参数的个数是可变化的,可以是 0 个,可以是 1 个,也可以是多个,可变参数在定义的时候用符号 * 表示,而且在函数被调用的时候参数会被组装成一个 tuple (类似 list 数组的一种基本数据类型),比如我们要实现一个计算多个数字的平方和,多个数字即可以被当成一个可变参数传过去,具体看下面的代码。
"""
*号在形参中
可以接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
"""
def variableParams(*params):
print(params) #可变参数会被组装成一个tuple
sum = 0
for i in params:
sum += i*i
print(i)
print(sum)
return sum
#输出
(2, 4)
2
4
20
"""
**在形参中
用于接收多余的关键字参数 并且组织成字典的形式赋值给**后面的变量名
"""
def index(a, b, **k):
print(a, b, k)
index(a=1, b=2) # 1 2 {}
index(a=1, b=2, c=3, name='jason') # 1 2 {'c': 3, 'name': 'jason'}
index(1,2,name='jason',age=18,pwd=123) # 1 2 {'name': 'jason', 'age': 18, 'pwd': 123}
'''需求:定义一个函数 无论传入多少关键字参数都可以正常执行'''
def func(**k):
print(k)
func() # {}
func(a=1,b=2) # {'a': 1, 'b': 2}
func(a=1,b=2,c=3,d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
关键字参数
关键字参数和可变参数类似,参数的个数都是可变的,所以也常被称作可变关键字参数,但是和可变参数的区别在于关键字参数在调用的时候会被组装成一个字典 dict ,而且参数是带参数名的,关键字参数在定义的时候用两个符号 ** 表示,和可变参数差不多,看下下面的具体代码就行。
def keyWordParams(**params):
print(params) #关键字参数会被组装成一个字典dict
dict = {'a':6,'b':3}
keyWordParams(a=6,b=3)
keyWordParams(**dict) #如果已经存在了一个dict,可以使用**来把参数当做关键字参数传入
#输出
{'a': 6, 'b': 3}
{'a': 6, 'b': 3}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!