zoukankan      html  css  js  c++  java
  • 函数的介绍

    函数的定义

    函数是对程序逻辑化进行构架或者过程化的议程编程方法。可复用性强,可以调高代码的重复利用率
    定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名

    特性

    • 减少重复代码
    • 使程序变得可扩展
    • 使程序变得可维护
      语法:
    def func():   # 定义函数名
        ''' 注释 '''
        print("hello,word")
    founc()   # 调用函数
    

    为什么要使用函数?

    def write_msg():
        with open("写文件.txt",'a+') as f:
            f.write('函数测试
    ')
    
    def fount1():
        print('fount1')
        write_msg()
    
    def fount2():
    
        print("fount2")
        write_msg()
    def fount3():
        print('fount3')
        write_msg()
    
    fount1()
    fount2()
    fount3()
    

    从上述中看出,只需要修改write_msg就可以被一直调用。避免重复写
    函数可以带参数:

    # 下面这段代码
    a,b=5,8
    c = a ** b
    print(c)
    
    #改成函数
    def founc(x,y):
        c = a**b
        print(c)
        return founc
    c = founc(5,8)
    print(c)
    

    函数的参数

    参数可以让你的函数更灵活,不止能做死动作,还可以根据调用时传参数的不同来决定函数内部的执行流程

    • 形参变量
      只能在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存,因此,形参只在函数内部有效。
      函数调用结束返回的主调用函数后则不能再使用该形参变量

    • 实参
      可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在调用时,他们必须有确定的值,以便把这些值传给形参。
      因此预先赋值,输入等办法使参数活的确定值

    def founc(x,y):     # 形参
        mult = x*y
        return mult
    
    c = founc(a,b)   #实参
    print(c)
    

    默认参数

    将变化很小的值设置成默认参数,可以提高效率(比如,统计全国人口登记,国籍,都是中国,就可以设置成默认参数)
    默认参数,要写在位置参数后面。

    def info(name, age, sex, country='CN'):    # 默认参数
       ''' print students info'''
        print("The Students info:")
        print(name, sex, age, country)     # 函数体
    
    
    info("zk", 22, 'male')    # 默认参数可以不写
    info('stain', 24, 'male', 'English')   # 如果不是默认参数,可以自己更改
    info('tanhui', 21, 'feale', 'CN') 
    

    输出信息为:

    The Students info:
    zk male 22 CN
    The Students info:
    stain male 24 English
    The Students info:
    tanhui feale 21 CN
    

    关键参数

    传参数的时候,不想按照顺序,就可以用关键参数,只需指定参数名就行(指定参数名的参数就叫关键参数)
    关键参数要在位置参数之后

    def stu_info(name,age,hobby='playgames',country='cn'):
        print('info of students')
        print('姓名',name)
        print("年龄:",age)
        print("国籍:",country)
        print("爱好:",hobby)
    
    stu_info("zk",hobby='watch TV',age=22,country='CN')
    
    stu_info('zk',hobby='games',22,country='cn')     # 不能这样写,位置参数要在前面
    stu_info('zk',22,hobby='games',age=21,country='cn')   # 参数重复
    

    非固定参数-动态参数

    • *args 元组形式
      当你的函数在定义时不确定传多少参数,就要用动态参数
      *若果参数中出现 args,传递的参数就不再是固定的数,传进来的所有参数变成一个元组
    def send_msg(msg,*args):    # *args 会把参入的参数变成一个元组  一般都要写在最后,如果不在最后,后面的参数都要写关键参数
       '''给多个用户发送信息'''
        for i in args:
            print('seed msg to->',i)
    # 方式一
    send_msg('你中奖了','zk','th','mm')
    # 方式二
    send_msg('你中奖了',*['xiaos','hc','mjh'])   # 直接在列表前加* 可以把列表的元素都传进去,不加会把列表当一个元素传进去。
    

    输出

    seed msg to-> zk
    seed msg to-> th
    seed msg to-> mm
    
    • **kwargs 字典形式
    def func(name, *args, **kwargs):
      ''' *args传入是元组, **kwargs是字典'''  
        print(name, args, kwargs)
    
    
    func('zk', 22, 'vfx', 'efx', addr='anhui', num=1983232)
    # 输出 zk (22, 'vfx', 'efx') {'addr': 'anhui', 'num': 1983232}  
    # 如果直接传字典,需要前面加 **
    dic = {"stu":'hhc','stu2':'ccz'}
    
    func('th',**dic)  # 输出     th () {'stu': 'hhc', 'stu2': 'ccz'}
    

    函数返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用 return语句把结果返回

    def stu_register(name,age,job):
        print(name,age,job)
        if age > 22:
            return False
        else:
            return True
    
    status = stu_register('zk',23,'vfx')
    print(status)
    
    • return 代表一个函数的结束,如果未在函数中指定return,那么这个函数的返回值为None
    • 返回值可以是任意的数据类型,如果return 返回2个值,返回是元组,如果加[],返回是列表
    • 函数可以有返回值,必须有变量接收,也可以没有返回值,不写,默认返回None
    • return 返回一个值(变量)
    • return 返回多个值,多个值用逗号分开,以元组形式返回。
    
    def num():
        a = 100
        b = ['a','b','c']
        c = {'a':'b','c':'d'}
    
        # return a   # 返回一个值
        # return a,b,c    # 返回一个元组
        return [a, b, c]  # 返回一个列表
    print(num())
    
  • 相关阅读:
    菜鸟学JS(一)——上传图片之上传前预览图片
    菜鸟学JS(二)——上传图片之上传后查看大图
    FTP文件操作之下载文件
    FTP文件操作之删除文件
    上传图片之上传前判断文件格式与大小
    FTP文件操作之上传文件
    ASP.NET中的几种弹出框提示
    dbo.fn_trace_gettable
    Blocked Process Report
    extended property
  • 原文地址:https://www.cnblogs.com/zhoukaivfx/p/10776261.html
Copyright © 2011-2022 走看看