本章将会讲解Python编程中的函数以及它的定义与参数。

函数介绍:
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数作用:
提高 应用的模块性 与 代码的复用性

定义规则:

注意:
函数 只有在调用时才会执行,通过 function_name(param) 进行调用
#实现打印九九乘法表
def multi_tabel():
for i in range(1, 10):
for j in range(1,i+1):
# print(i,j)
print("{}*{}={}".format(j,i,(i*j)),end=" ")
print()
#函数只有在调用的时候 才会执行
#如何调用:函数名()
multi_tabel()形参与实参 | 关键字参数 |
|---|---|
可变类型参数与不可变类型参数 | 默认值参数 |
位置参数 | 可变长度参数 |

def test_one(b): #函数定义时传入:形参
print(b)
a = 1
test_one(a) #函数调用时传入:实参
#过程
# a = 1
# b = a不可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存来保存值
可变类型参数在函数体内可以改变原有的值
位置参数也就是实参与形参顺序一一对应,而不论变量名
以 形参 = 实参 形式指定,不论参数位置
def test_one(a):
#整数为不可变对象
a = 10
print('inner:',a)
a = 1
test_one(a)
print('outer',a)
def test_one(li):
print('inner:',li,id(li))
# 列表是可变数据类型
li.extend([1,11]) #扩展
li = [1,2,3,4]
test_one(li)
print('outer',li,id(li))#实现两个数字相加
def sum_nums(num1,num2):
res = num1+num2
print(f"num1:{num1}")
print(f"num1:{num2}")
print(f"{num1}+{num2}={res}")
num1 = int(input("请输入num1:"))
num2 = int(input("请输入num2:"))
sum_nums(num2,num1) #位置参数:实参与形参的顺序是一一对应的,不论变量名实参与形参个数一致
sum_nums(num1=num1,num2=num2) #关键字参数:不受位置影响形参处进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖
掉默认参数。
*args 接收时会转为元组数据类型
**kwargs 接收时会转为字典数据类型
ü a,b,c = (1,2,3)
# 默认值参数,当不传时,就为形参指定的值。
#如果在实参中传了,会覆盖掉形参中指定的值。
def test_one(a, b=2):
a = a + b
print(a, b)
a = 1
test_one(a, 10)
#*args --> 可变长度的参数,你可以传也可不传,并且长度不做限制。但是会给你统一打包为元组。
def test_one(*args): # 形参
print(args)
# test_one() # ()
test_one("amy", 2, 3, 4, 5, 7) # (1, 2, 3)
#注意:python3.0以后,*args参数后面只能跟关键字参数
def test_one(*args, a=1, b): # 形参
print(args)
# test_one() # ()
test_one("amy", 2, 3, 4, 5, 7, a=10, b=20) # (1, 2, 3)
#**kwargs --> 可变长度的参数,你可以传也可不传,并且长度不做限制。实参传需要传入键值对,然后形参会#将它打包为字典
def test_one(**kwargs):
print(kwargs)
test_one(a=1, b=2, c=3)
#拆包
a, b, c = (1, 2, 3)
print(a,b,c,sep="\n")
#位置参数 形参实参个数一致 并且一一对应
def test_one(a, b, c):
print(a, b, c)
tu = (1, 2, 3)
test_one(*tu) # 1,2,3
# test_one(1, 2, 3)