Python函数:1、函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
2、函数能提高应用的模块性,和代码的重复利用率。
Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义函数:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。(定义时使用的参数,是形参)
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
例:
1 def quadratic_func(length,breadth ): 2 ''' 3 这是一个计算面积的函数 4 :param length: 长度 5 :param breadth: 宽度 6 :return: 面积 7 ''' 8 ret = length * breadth 9 return ret
函数的调用:
义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
如下实例调用了quadratic_func()函数:
return :返回值的关键字是return
return的作用:
1、结束整个函数
2、能够返回相应的值
如果不写return ,默认返回None!
return也可以返回多个值,(以元组的方式返回,逗号隔开)
1、练一练:写函数,检查获取传入列表或者元组对象的所有奇数位索引对应的元素,并将其新的列表返回给调用者
1 #方法1: 2 def odd_num(lis): 3 new_lis = [] 4 for i in range(len(lis)): 5 if i % 2 == 1: 6 new_lis.append(lis[i]) 7 return new_lis 8 print(odd_num([0,1,2,3,4,5,6,7])) 9 #方法2:切片 10 def odd_num(lis): 11 new_lis = lis[1::2] 12 return new_lis 13 print(odd_num([0,1,2,3,4,5,6,7]))
2、写函数,计算字符串中【数字】、【字母】、【空格】以及其他的个数
1 #isdigit:检测字符串是否为数字。 2 #isalpha:检测字符串是否为字母。 3 #isspace:检测字符串是否为空格 4 def examine_str(str_type): 5 digeit_num = 0 6 alpha_num = 0 7 space_num = 0 8 other_num = 0 9 for i in str_type: 10 if i.isalpha(): 11 alpha_num += 1 12 elif i.isdigit(): 13 digeit_num += 1 14 elif i.isspace(): 15 space_num += 1 16 else: 17 other_num += 1 18 return {'digeit_num':digeit_num, 19 'alpha_num':alpha_num, 20 'space_num':space_num, 21 'other_num':other_num 22 } 23 ret = examine_str('23414 16as dfjk$*((*$$') 24 print(ret)
备注:解耦在写一个函数时候,把 一个大功能尽量分成多个小功能,并且功能与功能之间影响减到最小,不宜把一个很复杂的功能写一个函数里
函数的参数
默认参数:1、如果函数调用时,没有传递默认参数,则使用函数调用时默认的值,如果传参,则使用传递的参数
位置参数:位置参数必须在前。
动态参数:*args,**kwargs.
[*] 是动态参数的标识符,args,相当于一个变量,也可以写别的,但是推荐使用args,kwargs
参数不固定时,就用动态参数
*args:代表一个数组,在python中显示为元组
**kwargs:相当于关键字参数,在Python中显示为字典模式,也可以传入字典
如果在定义函数时同时使用*args,**kwargs,作为参数,则可以接受所有参数
1 def my_test(*args,**kwargs): 2 print(args) 3 print(kwargs) 4 my_test(1,2,3,*[5,3,2],a =1 ,b =2) 5 my_test(1,2,3,5,3,2,a =1 ,b =2) 6 #2个的输出结果相同 7 ''' 8 (1, 2, 3, 5, 3, 2) 9 {'a': 1, 'b': 2} 10 (1, 2, 3, 5, 3, 2) 11 {'a': 1, 'b': 2} 12 '''