python解释器执行代码时,顺序是自上而下
遇到定义函数关键字(def),python 解释器 开辟内存空间,把函数代码块放到内存中
调用,遇到函数名+() 表示找到函数(函数内存地址),并执行函数代码块内容
形式参数、实参
def generate_random(number): #number 形式参数
for i in range(number)
ran = random.randint(1,20)
print(ran)
generate_random(6) # 6 实参,实际的参数,具体的值
判断数据类型
isinstance(2,int)
可变参数
*args 元组,可变参数必须放在不可变参数后边
参数个数不确定时
def add(*args): #底层已完成元组准备() arguments 简写
print(*args)
add() # 空元组
add(1) #(1,)
add(1,2,3) #(1,2,3)
可变参数与不可变参数结合使用时,不可变参数必须放在前边
def add(name,*args):
print(args,name)
sum = 0
if len(args) > 0:
for i in args:
sum += i
print('累加和是:',sum)
else:
print('没有元素可计算,sum:',sum)
add('小明',2,4,5)
#打印结果为 累加和是11
a,*b = 1,2,3,4
赋值结果为 a = 1, b=2,3,4
关键字参数
**kwargs,key = value,参数是字典格式,关键字参数,也叫可变参数。带默认值的参数,也叫关键字默认值。
def add(a,b=10): # a 形参,b 默认值参数,关键字默认值
result = a + b
print(result)
# 调用
add(7) #结果 17
add(4,8) # a = 4,b = 8 结果 12
def func(**kwargs): #关键是 **,kwargs 可以是任意字典名。装包
print(kwargs)
#调用
func(a=1,b=2,c=3) #调用时需要用key=value格式,底层运用的是装包机制。装成字典
func()
# 结果是字典,{"a":1,"b":2,"c":3}
dict = {"001":"python","002":"java","003":"php"}
func(**dict) # 调用,传入字典时,参数必须带 **,拆包,拆成关键字格式
#给函数func 赋值时(传递实参),**字典名
#1、函数调用 func(**dict) 首先对字典进行拆包 func(001=python,002=java,003=php)
#2、def func(**kwargs),再进行装包操作,输出字典格式
组合使用
def aa(a,b,*c,**d):
print(a,b,c,d)
# 注意,a,b值是必传参数
#调用
aa(1,2)
#结果
1 2 () {}
#调用
aa(1,2,3,4)
#结果
1 2 (3,4) {}
#调用
aa(1,2,x=100,y = 200)
#结果
1 2 () {"x":100,"y":200}
#调用
aa(1,2,3,x=100)
#结果
1 2 (3,) {"x":100}