1. 函数
def 函数名(): #函数名与变量相同
函数体
(1) 函数返回值: return
1. 遇到return,结束函数
def list_a():
print(123)
print(456)
return
print(798)
print(abc)
list_a()
#输出结果
123
456
(2) 给函数的调用者返回值:
s1 = '123325436456'
def my_len(): #函数定义()放的是形式参数
count = 1
for i in s1:
count += 1
return count
ss = my_len() #<---第一步先执行 #函数的执行()实际参数,实参
print(ss) #返回值给print 打印count
13 <----这就是返回值
无return 返回None
return 不写 或者None 返回None
return 单个数据,后面写什么 返回什么(int)
return 多个数据,返回元祖(tuple)
还可以分别赋值
def my_len():
count = 1
for i in s1:
count += 1
return 666,222,count
off1,off2,off3 = my_len()
print(off1)
print(off2)
print(off3)
s1 = '123325436456'
a = [1,2,3,4,5,'老男孩']
b = 'adsfasfsadfgd'
def my_len(ff):
count = 1
for i in ff:
count += 1
return count
ret = my_len(a)
oo = my_len(b)
kk = my_len(s1)
print(ret)
print(oo)
print(kk)
#输出结果
7
14
13
传参方向:
从实参角度
(1)位置参数 #必须一一对应,按顺序
def funcl(x,y):
print(x,7)
funcl(1,2)
输出结果
1 2
(2)关键字参数 #必须一一对应,不分顺序
def funcl(x,y,z):
print(x,y,z)
funcl(y=2,x=3,z=5)
输出结果
3 2 5
小练习:传参2个数,比较大小,打印大的数
def l_n(x,y):
if x > y:
print(x)
l_n(6,5)
或者
def l_n(a,b):
return a if a > b else b
print(l_n(3,2))
(3)混合参数(有位置还有关键字参数)----关键字参数必须在位置参数的后面
def fa2(a1,a2,a3):
print(a1)
print(a2)
print(a3)
a2(1,2,a3=4)
从形参角度
(1)位置参数 #必须一一对应,按顺序
def funcl(x,y):
print(x,7)
funcl(1,2)
(2)默认参数#
def register(name,sex='男'): #sex 默认是男
with open('register',encoding='utf-8',mode='a') as f:
f.write('{} {}
'.format(name,sex))
while True:
username = input('请输入姓名: /q 退出')
if username.upper() == 'Q':break
sex = input('请输入性别: ') #全是男的 就可以默认参数
register(username,sex)
(3)动态参数 *args , **kwargs 万能参数 # 函数的定义 * 聚合。
def func2(*args,**kwargs):
print(args) #元祖(所有位置参数)
print(kwargs) #字典
func2(1,2,3,4,5,6,7,11,'alex','老男孩',a='ww',b='qq',c='222')
def func3(a,b,sex='男',*args)
print(a)
print(b)
print(sex)
print(args)
func3(1,2,'老男孩','alex','wusir') #顺序,位置参数,*args,默认参数 **kwargs
def funcl(*args,**kwargs):
print(args)
print(kwargs)
ll = [1,2,3,4]
lll = (1,2,3,4)
12 = ['alex','wusir',4]
funcl(*ll,*12,*lll) # 函数的执行: *打散功能
(1, 2, 3, 4, 'alex', 'wusir', 4, 1, 2, 3, 4)
{}
def funcl(*args, **kwargs): #函数的聚合
print(args)
print(kwargs)
dic1 = {'name1':'liyun'}
dic2 = {'name2':'laowang'}
funcl(**dic1,**dic2) #函数的打散