函数形式
def test(函数名)(x, y, z)(参数):
内部代码块
return(s)(返回值)
函数文字说明
函数内的参数分为形参和实参,在调用函数时输入的实参将传给形参来运行函数。在函数执行完毕后形参占的内存立即被释放,即函数结束后参数的赋值内容消失。
设置函数是为了实现某一个一个功能,函数遇到return立即结束。
Python中的过程就是没有返回值的函数。
函数的优点:1.代码重用 2.保持一致性,代码易维护。 3.可扩展性强
当返回值的个数等于0时,返回值为None。当返回值的个数等于1时,返回的值为该object。当返回值的个数大于1时,返回的值为这些object组成的元组,即返回一个tuple。
位置参数和关键字参数
传参数的方式分为传位置参数和传关键字参数,不论以哪种方式传入参数都必须和函数要求的参数一一对应,在位置参数和关键字参数混合使用时关键字参数必须在位置参数右边。
传入位置参数(必须按照顺序):
def test(x, y, z):
print(x)
print(y)
print(z)
test(1, 2, 3)
传入关键字参数(无需考虑顺序):
def test(x, y, z):
print(x)
print(y)
print(z)
test(y=2, x=1, z=3)
传入混合参数:
def test(x, y, z):
print(x)
print(y)
print(z)
test(1, 2, z=3)
默认参数
在设置函数式设置默认值。
def handle(x, y="default"):
print(x)
print(y)
handle(1)
handle(1, 2)
**(*aggs、kwargs)
*args 表示任何多个无名参数,它是一个tuple
**kwargs 表示关键字参数,它是一个dict
在设置参数时加入 * args可以保证传入参数不限个数,并且会以元祖的方式去处理属于args的内容,并且在调用函数时支持输入列表,列表前加 * 代表将列表的每一个元素作为元组的元素,不加 * 会将列表作为元组的一个元素处理。
在设置函数时加入**wargs也可以保证传入参数不限个数,并且会以字典的方式处理属于kwargs的内容,并且在调用函数时支持输入字典。
在*args和**kwargs 同时使用时,*args放在 **kwargs的左边,表示支持一切形式的输入。
def test(x, *args):
print(x)
print(args)
test(1, 2, 3, 4, 5)
test(1, [2, 3, 4, 5])
test(1, *[2, 3, 4, 5])
def test(x, **kwargs):
print(x)
print(kwargs)
test(1, y=2, z=3)
test(1, **{"y" :2, "z" :3})
def test(x, *args, **kwargs):
print(x)
print(args)
print(kwargs)
test(1,2,3,4,y=2,z=3)
test(1,*[2, 3, 4], **{"y" : 2, "z" : 3})
含有函数时的执行顺序
解释器在读取有函数的程序代码时会将def后的函数名做类似于变量名的操作,将函数内部的代码块以字符串的形式储存在以函数名命名的对象而不去执行,在调用函数时才会执行内部代码块的内容。
def test1():
print("from test1")
def test2():
print("from test2")
test2()
test1()