文章目录
函数 function
函数时可以重复执行的语句块,可以重复使用。
作用:
- 用于封装语句块,提高代码的重用性
- 定义用户级别的函数
函数定义(创建)语句 def 语句的语法:
def 函数名(形参列表):
语句块
说明:
函数的名字就是语句块的名称;函数名的命名规则与变量名相同(函数名必须为标识符(字母或下划线开头));函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量,通常让函数处理外部数据需要用参数给函数传入一些数据;函数的参数列表可以为空;语句部分不能为空,如果为空需要填充pass语句
示例:
def say_hello():
print("hello world")
print("hello cat")
print("hello dog")
say_hello()
函数的调用
函数名(实际调用传递参数列表)
注:实际调用传递参数以后称为实参
说明:函数调用是一个表达式,如果没有return语句,此函数执行完毕后返回None对象,如果函数需要返回其他的对象需要用到return语句
示例:
def mymax(a, b):
print("a=", a)
print("b=", b)
if a > b:
print(a, ">", b)
else:
print(a, "<=", b)
mymax(10, 2)
return 语句
语法:
return [表达式]
[] 代表可以省略
作用:用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系
说明:(1) return语句后跟的表达式可以省略,省略后相当于return None
(2) 如果函数没有return语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句)
(3) 函数调用一定会返回一个对象的引用
函数的参数传递
传递方式:
- 位置传参:
示例:
def myfun(a, b, c):
pass
myfun(1, 2, 3)
说明:实际参数和形式参数通过位置进行传递来匹配;实参个数必须与形参个数相同
2. 序列传参:序列传参是指在函数调用过程中,用*将序列拆解后按位置传参的方式进行参数传递
示例:
def myfun(a, b, c):
pass
s = [1, 2, 3]
myfun(*s) # *表示把s拆开, 等同于myfun(s[0], s[1], s[2])
s2 = "ABC"
myfun(*s2)
- 关键字传参:关键字传参是指传参时,按照形参的名称给形参赋值,实参和形参按名称进行匹配
示例:
def myfun(a, b, c):
pass
myfun(b=22, c=33, a=11) # 等同于myfun(11, 22, 33)
说明:实参和形参可以不按位置匹配
4. 字典关键字传参:是指实参为字典,将字典用**拆解后进行关键字传参
示例:
def myfun(a, b, c):
pass
d = {'c': 33, 'b': 22, 'a': 11}
myfun(**d) # 拆解字典后再传参,相当于myfun(d['a'], d['b'], d['c'])
# 以下是错误的用法
d1 = {'c': 33, 'b': 22, 'a': 11, 'd': 44}
myfun(**d1)
说明:字典的键名和形参名必须一致;字典键名必须为字符串;字典的键名要在形参中存在
函数的综合传参
函数传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合
示例:
def myfun(a, b, c):
pass
myfun(100, *[200, 300]) #正确
myfun(*"AB", 300) # 正确
myfun(100, c=300, b=200) # 正确
myfun(1, **{'b': 2, 'c': 3}) # 正确
myfun(**{'b': 2, 'c': 3}, a=1) # 正确
myfun(b=2, c=3, 1) # 错误,不能确定1给那个参数
说明:传参时先位置传参,后关键字传参
函数的形参(如何接受实参)
函数的缺省参数
语法:
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, …):
…
示例:
def info(name, age=1, address="未填写"):
print(name, age, address)
info('xiaomaomao', 2)
info('xiaoxiaomao', 20, '北京')
info('cat')
说明:(1)缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数
如:
def test(a, b=10, c): # <—是错的,b是缺省参数,则c必须是缺省参数
pass
(2) 缺省参数可以有0个或多个,甚至全部都有缺省参数。
函数的形参定义方式
- 位置形参
语法:
def 函数名(形参名1, 形参名2, …):
语句块 - 星号元组形参
语法:
def 函数名(*元组形参名):
语句块
作用:收集多合的位置传参
说明:元组形参名通常用‘args’
示例:
def func(*args):
print("参数个数是:", len(args))
print("args=", args)
fun