函数引入
函数--》工具(需要用的时候才用,提前造/买):
需要用函数的时候,拿来用就行了,提前写/复制粘贴
封装
函数不会改变某一个功能的代码。它只做了一件事情-->封装(接口),只会让你的代码更加简洁而已
函数的定义
使用工具之前-->必须得创造一个工具-》定义函数
def 函数名(等同于变量名):
'''对函数(工具)的描述信息'''
代码块
pass
def guess():
'''给定两个数,打印较大的数'''
x = 30
y = 20
if x > y:
print(x)
else:
print(y)
print(guess._doc_)
定义阶段,检测语法错误,不执行
定义函数的三种方式
参数,未知数,变量
空函数:定义了函数,啥都没有, 只知道工具叫什么名字,但不知道如何造出
def func():
pass
无参函数:工具可以单独使用
def add():
'''无参函数'''
x = input('num1:')
y = input('num2:')
print(int(x)+int(y))
add()
有参函数:这个工具不能单独使用,必须加个配件,零件
def add(x,y):
'''有参函数'''
print(int(x)+int(y))
print(1)
x = input()
y = input()
add(x,y)
函数的调用
函数的调用--》使用函数
函数名()
print(guess) # 函数地址
guess() # 没有为什么,加括号就能调用(执行内存中的代码)
函数的返回值
return()
def add(x,y):
# 逻辑
return x + y # 函数的返回值;终止函数(跳出函数)
res = add(1,2)
print(res)
def add(x,y):
print(x+y)
# return x + y
res = add(1,2) # 默认返回None
print(res)
3
None
def add(x,y):
# return(x,y,x+y) return可以返回任意数据类型
return x,y,x+y # return可以返回任意数据类型,不加括号返回多个值时,默认用元组得到形式返回
x,y,z = add(1,2)
print(x,y,z)
函数的参数
参数:自己定义的条件
有参函数:有参数(粗/细/长/短的螺丝刀)的函数
def xianshiping(liangdu,duibidu): # 形参
''''''
if liangdu == 0:
print('不显示')
return
if duibidu > 300:
print('高清无码')
else:
print('av画质')
xianshiping(0,100) # 有参数,就必须得传参 # 实参
形参:定义函数阶段的产物,具有接受实参的作用,具有描述意义
位置形参:从左到右一次接收实参的值
默认形参:1. 如果你不给,使用默认值;如果调用的时候传值,使用传的值
- 默认形参必须跟在位置形参后面。
def xianshiping(duibidu: int = 150,liangdu : int ) -> int:# 错误
xianshiping(1,300)
def xianshiping(liangdu : int, duibidu: int = 150) -> int:
xianshiping(1,300)
实参:调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)
位置实参:从左到右依次给位置形参传值,一一对应,形参有多少个,实参也必须有多少个。
关键字实参:位置实参必须写在关键字实参前面
按照形参名给形参传值(使用情况,基本为0)———》函数的参数一般0-3个;尽量不超过3个
def xianshiping(liangdu,duibidu,resolution_ratio,length,width):
print(liangdu,duibidu,resolution_ratio,length,width)
xianshiping(liangdu=1,duibidu=2,resolution_ratio=3,length=4,width=5)
1 5 2 3 4
def xianshiping(liangdu : int, duibidu: int) -> int:
# : 后面规定是参数的数据类型,约定俗成的 :->后面规定的是返回值的数据类型,约定俗称的
可变长参数
(可以无限长)
可变长实参
def min_10(a,b,c,d,e,f,g,h,i,j):
print(a,b,c,d,e,f,g,h,i,j)
res1 = min_8(a,b,c,d,e,f,g,h)
res2 = min_2(i,j)
return min_2(res1,res2)
lt = [1,2,3,4,5,6,7,8,9,10]
res = min_10[*lt] # * 相当于做了解压缩,也就是把lt内的元素一个一个取了出来c传给形参
print(res)
可变长形参
def min_10(a, b, c, *lt): # *lt,把所有传过来的实参全部接收,并且以元组的形式存储
print(lt)
a, b, c, d, e, f, g, h, i, j, *_ = lt
print(_)
res1 = min_8(a, b, c, d, e, f, g, h)
res2 = min_2(i, j)
return min_2(res1, res2)
res = min_10(1, 2, 3, 4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 11,
1, ) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)