目录
1、提前了解一下参数,定义一个函数需要def +函数名+(参数):
2、参数有两种:一种是括号里的“形参”,另一种是调用函数时括号里填的实参。细节后续会讲。
①用户调用函数时,可以在括号中直接设置参数的名称和默认值,这种类型的参数属于关键字参数。
②在设置函数的关键字参数时,可以不依照它们的位置排列顺序,以为python解释器会自己匹配参数名及其对应的参数。
③用户还可以将 调用函数中的参数(也就是实参),进行赋值(参数)和关键字(赋值)参数的混合使用,但必须将赋值(参数)放在关键字(赋值)参数的前面。听不懂直接看下面例子:
④调用函数时,如果没有设置实参的值,就会使用定义函数时设定的默认形参值。如下:
3、函数的返回值可以是多个,而多个的返回值以元组对象的类型返回。
一:参数:
1、提前了解一下参数,定义一个函数需要def +函数名+(参数):
2、参数有两种:一种是括号里的“形参”,另一种是调用函数时括号里填的实参。细节后续会讲。
3、首先:参数要求用户必须以正确的顺序传入函数(括号中)。
调用函数时的参数必须和定义函数时的参数数量一样,且位置要对应。
def gg(x, y): return x - y dg = gg(200, 50) print(dg) # 结果为:150
# 如果上例中调用gg()函数时,括号中的参数数量不对会报错。
# 如:gg() * gg(100,200,300)
二、关键字参数:
①用户调用函数时,可以在括号中直接设置参数的名称和默认值,这种类型的参数属于关键字参数。
②在设置函数的关键字参数时,可以不依照它们的位置排列顺序,以为python解释器会自己匹配参数名及其对应的参数。
def gg(x, y): return x - y gg(200, 100) # 按参数顺序传入参数。 结果为:100 gg(x=200, y=100) # 按参数顺序传入参数,并指定参数名。 结果为:100 gg(y=100, x=200) # 不按参数顺序传入参数,并指定参数名。 结果为:100
③用户还可以将 调用函数中的参数(也就是实参),进行赋值(参数)和关键字(赋值)参数的混合使用,但必须将赋值(参数)放在关键字(赋值)参数的前面。听不懂直接看下面例子:
def ss(name, price): "输出商品价格信息" print('名称:', name) # 名称:电视机 print('价格:', price) # 价格:2880 return ss('电视机', price=2880) # 调用函数,且括号中的是实参,实参就是要传入定义函数时声明的形参中。 # 这里将'电视机'成为 “赋值(参数)”,后面的为 “关键字(赋值)参数”
④调用函数时,如果没有设置实参的值,就会使用定义函数时设定的默认形参值。如下:
def aa(name, price=6000): # 一定要有默认参数值,才能在下面使用默认参数值 "输出商品价格信息" print('名称:', name) print('价格:', price) # 结果为: return aa(name='冰箱', price=2880) # 此参数值的结果为:名称: 冰箱 \\ 价格: 2880 aa(name='空调') # 此参数值的结果为:名称: 空调 \\ 价格: 6000 # ***注意上面这条:没有传递price参数值,使用默认的参数值:前提是你TMD在参数那里设置了默认参数值!***
使用默认参数,参数的位置就不那么重要了,所以不用管。
如果每个形参都定了默认参数值,那么调用该函数时,可以不设置实参,使用默认形参。(感觉跟上条有点重复了……)如:
def ss(x=200, y=100): return x - y print(ss()) # 没有传递参数,使用默认参数值。结果为:100
——————————————————划重点———————————————————
这部分要着重了解:
⑤可变参数:
1、元组参数
如果用户在声明参数时,不能确定需要 用到几个参数,就可以使用可变参数。
在形参名前加个星( * )号,即可以将多的实参传入形参中变为元组参数。
def fruits(aq, *args): print(aq) for ab in args: print('可变参数为:', ab) return print('不带可变参数') fruits('西瓜') print("带两个可变参数") fruits('‘西瓜', '苹果', 15.5) fruits('西瓜', '苹果', 15.5, '香蕉', 3.5, '橙子', 10.5) print('带6个可变参数')
2、字典参数:
使用方式:①在形参名前加两个星( * )号。
②调用函数时在实参中,将键和值用等号连接,每个键用逗号隔开。
def fruits(**args): for name in args.keys(): # 使用循环查看键 print('名称:', name) # 结果为:名称: 葡萄 \\ 名称: 梨 \\ 名称: 西瓜 for price in args.values(): # 使用循环查看键值 print('价格:', price) # 结果为:价格: 15.0 \\ 价格: 12 \\ 价格: 20 fruits(葡萄=15.0, 梨=12, 西瓜='20') # 给字典参数赋值时,键不能加引号,键值可以
————————————————分割线——————————————————
二、有返回值和无返回值的函数
1、有返回值的函数。
返回值使用 return 语句。
def sum(count, price): """输出商品总价格""" total = count * price # 表达式 print('商品总价格:', total) # 结果为:商品总价格: 69.0 return total # 将结果返回给totla然后print()输出其结果。 sum(15, 4.6) # 调用函数
2、返回值也可以是个表达式:
def addnumbers(x, y): return x * 10 + y * 20 # 返回一个表达式的结果,返还给谁?谁调用就给谁啊。 ab = addnumbers(1, 2) # 必须要给函数名赋值给变量,若是直接输出则会返回一串看不懂的东西 print(ab) # 结果为:50
3、函数的返回值可以是多个,而多个的返回值以元组对象的类型返回。
def returnxy(x, y): return x, y # 返回了两个值 a, b = returnxy(10, 20) print(a, b) # 结果为:10 20 print(type(a)) # 返回的是元组元素的类型,结果为:<class 'int'>
4、如果函数没有返回值,则返回None:
def myfunction(): return ret = myfunction() print(ret) # 结果为:None # 注意:如果没有return 语句,函数执行完毕后也会返回结果,只是结果为None。 # 有时候,return None一句也可以简写为return。