Day 9 :初识函数

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]))
View Code

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)
View Code

备注:解耦在写一个函数时候,把 一个大功能尽量分成多个小功能,并且功能与功能之间影响减到最小,不宜把一个很复杂的功能写一个函数里

 函数的参数

默认参数: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 '''

 练一练: 

1、写函数,传入N个数,返回字典{‘max’:最大值,‘min’:最小值}

 1 #例lis  = [31,42,65,8,33,68]
 2 dic = {}
 3 min_num = lis[0]#假设 lis 0 是小值
 4 max_num = lis[0]#假设 lis0 是最大值
 5 for i in lis:
 6     if i < min_num:
 7         min_num = i
 8         dic['min'] = min_num
 9     elif i > max_num:
10 # 第一次和31比较,条件不成立,第二次和42比较,条件成立,则max_num = 42,添加至字典,第三次,再次循环条件再次成立,
11 # 因为key相同,再次更新字典,一次类推,找出最大值
12         max_num = i
13         dic['max'] = max_num
14 print(dic)
15 #函数写法
16 def max_min(*args):
17     min_num = args[0]
18     max_num = args[0]
19     for i in args:
20         if i < min_num:
21             min_num = i
22         elif i > max_num:
23             max_num = i
24     return {'max':max_num,'min':min_num}
25 print(max_min(123,4,2342,5,346,7))
View Code

 2、写函数,计算图形面积计算圆的面积,正方形的面积,长方形的面积

调用函数(‘圆形’,圆半径) 返回圆的面积 π*半径的平方

调用函数(‘正方形’,边长) 返回正方形的面积 长的平方

调用函数(‘长方形’,长,宽) 返回长方形的面积 长*宽

 1 def figure_area(name,*args):
 2     def rectangle(x,y):
 3         return  '长方形面积是',x*y
 4     def square(x):
 5         return  '正方形面积是',x*x
 6     def circle(r):
 7         return  '圆形面积是',3.14*r*r
 8     if name == '长方形':
 9         return rectangle(*args)
10     elif name == '正方形':
11         return square(*args)
12     elif name == '圆形':
13         return  circle(*args)
14     else:
15         return '无法计算'
16 print(figure_area('长方形',5,20.1))
View Code

3、写函数,传入一个参数N,返回N的阶乘

 例 cal(5),计算5*4*3*2*1

def my_cal(num):
    ret = 1
    for i in range(1,num+1):
        ret *= i
    return ret
print(my_cal(5))

4

人生苦短,我用Python
原文地址:https://www.cnblogs.com/sunjinchao/p/10888123.html