zoukankan      html  css  js  c++  java
  • 模块化编程-函数

    模块化编程-函数


    什么是模块化编程?

    模块化编程是指把程序进行封装(函数封装、对象封装、文件封装等)

    什么是函数?

    function -> 函数、功能
    函数就是一个具有特定功能的代码块

    函数的作用?

    函数就是把代码进行封装,以提高代码的重用性,提高开发效率,并且降低了后期的维护成本

    函数的定义和使用

    函数的定义格式:
        1.函数定以后不调用不执行
        2.不能再函数定义前调用函数
        3.函数的调用不受次数影响
        4.函数的命名要遵守命名规范
            字母数字下划线,不能以数字开头
            严格区分大小写,不能使用关键字
            命名最好有意义,且不要使用中文
            内置函数不冲突,冲突之后被覆盖
    
    # 定义函数【基本结构】
    def 函数名([参数列表]): # []代表非必传
        当前函数的具体代码
        。。。。
        def love():
            print('i')
            print('love')
            print('python')
    # 函数封装完并不会执行,只是把函数定了而已
    # 如果要使用定义的函数,那么需要用语法来调用函数
    #函数的调用
    函数名():
        love()
        love()
        love()
        。。。。#函数的调用不受次数限制
        
        # 带有阐述的函数如何定义
    
    

    函数的参数:

    • 函数在定义时,可以在列表的位置定义形参
    • 如果函数有形参,那么在调用时必须传递参数(实参)
    • 实参将参数传递给形参的过程,本质上就是变量的赋值操作
    def love(w):
        print(f'ilove{w}')
    
    # 调用带有形参的函数时需要传递实参
    love('python')
    

    函数中的参数类型

    普通参数、默认参数、收集参数、命名关键字参数、关键字参数收集

    普通参数就是位置参数,也叫顺序参数,是必须传递的参数

    def func(x,y):
        print(x,y)
    
    func(1,2)
    
    

    默认参数

    
    #要求三个参数,至少传递两个,最后一个参数就是默认参数,默认参数需要在定义形参时指定默认值,默认参数必须排在普通参数后边
    
    def func1(x,y,i=100):
        print(x,y,i)
    #没有传递参数,调用时使用默认值100
    func1(1,2)
    #覆盖默认参数
    func1(1,2,3)
    def func2(x=100,y,i=100): #x作为默认参数必须在y后面赋值,此时函数会报错
        print(x,y,i)
    
    

    收集参数 *args

    
    #定义一个形参,专用手机多余的实参,可理解成实参未定,直接用一个形参(*args)接收,收集参数可以使用任意字符串命名
    
    def func2(x=0,*args):
        if x==0:
            print('进行加法运算',args)
        else:
            print('减法运算',args)
    
    func2(1,2,3,4) #agers是个元组,打印结果:减法运算 (2, 3, 4)
    def func2(x=0,y=2*args):
        pass
    
    

    命名关键字参数

    # 关键字参数定义在收集参数后面,关键字必须通过形参的名字进行传参
    def love(a,b,c=3,*args,name):
        print(a,b,c,*args)
        print(args)
        print(name)
        
    #调用
    love(1,2,4,2,2,2,name=5)
    
    #在调用普通函数时需要按照顺序进行参数的传递
    #也可以把普通函数的普通参数按照关键字参数进行传递
    def love(name,age):
        print(name,age)
    #调用
    love(name=1010,age='aaa')
    

    关键字参数收集**args

    def love(a,b,c=3,*args,name,age,**kwargs):
        print(a,b,c)
    # 普通手机参数,会把多余的参数收集成为元组
        print(args) 
     #关键字参数收集,会把多余的关键字残守收集为字典(key:value)    
        print(kwargs)
        
    #调用
    love(1,2,3,a,b,name='python',age=12,sex='man',id=1)
    

    所有参数的摆放

    • 实参:普通实参在前,关键字参数在后
    • 形参:
      1. 关键字收集参数一定在最后出现
      2. 收集参数推荐在普通参数之后使用
    • 推荐顺序:普通形参,收集参数,关键字收集参数

    函数返回值

    函数除了可以满足功能之外,还可以返回所需的一些内容
    函数使用return关键字指定返回数据,可以返回任意类型的数据
    函数返回值可以将返回数据传递到调用方,调用方可以使用变量接收或用于判断等方式处理

    没有返回值的函数

    def love():
        print('aaaa')
    

    函数中指定返回内容,使用return关键字

    def love(a,b):
        res=f'{a} love {b}'
        return res
    print(love('i','python')
    #函数体中return之后的代码不会被执行,return也代表函数体的结束
    
    def love(x,y):
        res=(x)
        retrun res
        print(y) #此行代码在return之后,不会被执行
    

    函数的分类:

    1.执行过程函数:函数体内完成一定的功能即可,没有返回值
    2.返回值函数:函数体内完成一定的功能,并且返回一个结果到函数的调用出

  • 相关阅读:
    Erlang学习笔记2
    erlang的Socket参数含义
    Erlang 日期和时间处理、时间戳转换
    图(有向)-拓扑排序
    图(无向连通无权图)-广度优先搜索
    图(无向连通无权图)-深度优先搜索
    图(无向连通无权值图)深度优先生成最小生成树
    客户关系管理系统
    字符串类
    I/O流
  • 原文地址:https://www.cnblogs.com/hekaiqiaq/p/15507397.html
Copyright © 2011-2022 走看看