• 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
  • 相关阅读:
    IE和FF下面的css半透明效果
    javascript 文字滚动
    利用URLRewriter重写url
    “/”应用程序中的服务器错误。
    Iframe 参数列表
    【转】CSS的一些技巧
    ASP.NET 如何动态修改 title Meta link标签
    Test2.数据库批处理添加练习(mysql_java)
    html5(test1.提交表单)
    smartupload图片上传
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/10888123.html
Copyright © 2020-2023  润新知