写函数的时候,要尽量以功能为导向,结果最好不要直接在函数中打印(比如len(list),我只想要长度,不需要打印输出)

def len_1(para): 同样,函数名不能是关键字,同等变量的命名规则就行了
count = 0
for i in para:
count += 1
return count return 终止函数,并返回一个值 (如果没有return,默认返回None (等同return None))
a = 'dfdf'
print(len_1(a))

 

没有返回值

  • 啥也不写
  • return
  • return None

返回一个值: 可以返回任意的数据类型。返回什么 就接受什么
当然,我们目的是返回一个相关的参数
返回多个值: 用一个变量接收,接收到的是一个元组
用多个变量接收,返回值和接收返回值的变量数目要一致
---------------------------

参数:

形参和实参
传参数可以传任意的数据类型,并且传什么,接收什么
而站在传参数的角度上看问题:两种传参方式:
第一种:按照位置
第二种:按照关键字
如果两种混用,按照先传位置,后传关键字的传参顺序(一般不推荐)

1 def len_1(para): para:参数:形式参数,形参 接收参数
2 if len(para) > 2:
3 return True
4 else:return False
5 a = 'ab'
6 len_1(a) a:参数:实际参数,实参 传参数、传参
7 print(len_1(a))

 


--------------
-----------

1 def replace_1(name,age)
2 pass
3 
4 replace_1('zhou',18) 按照位置
5 replace_1(name = ‘zhou’,age = 18) 按照关键字
6 replace_1(‘zhou’,age = ‘18’) 先位置,后参数,否则会出错
7 name是str类型,age是int类型,所以 多个 参数可以分别使用任意数据类型

 

--------
--------

默认参数

def replace_1(name,age = 18)
pass
replace_1('zhou') 不传年龄参数,就默认18 (默认参数是18)
replace_1(‘zhou’,age = 80) 传年龄参数80, age = 80

------
-----
函数默认参数魔性的用法

 1 def lst(li = []):
 2     li.append(1)
 3     return li
 4 
a = [] 5 print(lst(a)) 6 print(lst(a)) 7 print(lst(a)) 8 print(lst(a)) 9 #[1] 10 #[1, 1] 11 #[1, 1, 1] 12 #[1, 1, 1, 1] 13 14 类似于列表在函数外面 15 l = [] 16 def lst(li = l): 17 li.append(1) 18 return li 19 a = [] #a = [] 会累加 20 print(lst(a)) 21 print(lst(a)) 22 print(lst(a)) 23 print(lst(a)) 24 不过发现一个情况,函数定义的参数是个列表,实参也得是列表a = [list] 25 26 def lst(li = []): 27 li.append(1) 28 return li 29 print(lst([])) 30 print(lst([])) 31 print(lst([])) 每次都让[]添加 32 print(lst([])) 33 34 so,魔性的用法:默认参数 尽量避免使用可变数据类型

 

------

函数的参数:
形参:(定义阶段)
位置参数
默认参数
动态参数
实参:(调用阶段)
位置传参
关键字传参

动态参数:

*args  **kwargs

 1 def func(*args):   参数前面加*,这个参数就变成动态参数
 2     print(args)      如果打印,会发现 接收过来的参数是元组形式
 3 func(1,2,3,4)
 4 #(1,2,3,4)
 5 或者:迭代添加参数,迭代参数   *变量名称
 6 li = ‘dfdf’
 7 func(*li)
 8 #('d','f','d','f')   元组
 9 ---
10 
11 def func(a,b,c,*args):   
12     print(a,b,c)
13     print(*args)
14     
15 func(1,3,2,4,5,6)
16 #1,3,2                           #位置参数接收完后,剩下的都被*args以元组的方式接收
17 #(4,5,6)   元组
18 -----
19 
20 如果有默认参数,那就放到*args后面
21 def func(a,b,c,*args):   
22     print(a,b,c)
23     print(*args)
24     
25 func(1,3,2,4,5,6)
26 #1,3,2                           #位置参数接收完后,剩下的都被*args以元组的方式接收
27 #(4,5,6)
28 -------
29 
30 def func(a,b,c,*args,key = 100):   
31     print(a,b,c)
32     print(*args)
33     print(key)    
34 func(1,3,2,4,5,6)
35 #1,3,2
36 #456
37 #100
38 func(1,3,2,4,5,key = 9)
39 #1,3,2
40 #4,5
41 #9
42 ---------
*args,**kwargs

相关文章: