zoukankan      html  css  js  c++  java
  • python入门之函数

    函数的定义

    1、什么是函数

    函数就是一种工具,可以重复调用。

    2、为什么要用函数

    • 防止代码冗余
    • 代码可读性差

    3、怎么用函数

    通过def(define)关键字定义函数---> 制造工具

    调用函数 ---> 使用工具

    def 函数名():
        '''
        函数的注释,描述函数体代码的功能
        '''
        代码块1
        代码块2
     
    函数名()  # 使用函数
    
    # 定义函数(制造工具)
    def index():  # index变量名
        print('你好,函数!')  # 代码块
     
    index()  # index访问函数的内存地址,括号是调用的意思
    

    4、函数名的命名规范

    函数名的命名规范与变量名一样

    5、函数的分类

    • 有参函数

      • def index(user, pwd):
    • 无参函数

      • def index():
    • 空函数

      • def index():
      •  pass
        

    6、函数的调用

    函数先定义后执行,不调用函数,就不会执行函数体代码,只会检测函数体代码的语法规范性

    index()
     
    index(name, pwd)  # 传入参数执行
     
    index(1, index(3, 2))  # 先执行里面的index
    

    二、return

    return:是一个函数结束的标志,函数体代码只要执行到return,函数执行结束

    • 不写return,默认返回none

    • 只写return,只有结束函数体代码的效果,返回none

    • 写return none,与只写return的效果相同

    • return返回一个值:可以将返回的结果,当做一个变量值来使用

    • return返回多个值

      • 将返回的多个值,默认存入元组返回
      • 函数的返回值不想被修改
      • 可以自己指定返回的数据类型

    三、函数的参数

    3.1 参数的类型

    3.1.1 形参

    是在函数定义阶段就规定的参数,相当于定义变量时的变量名

    3.1.2 实参

    是在函数调用阶段传入的参数,相当于定义变量时的变量值

    def index(a):  # 形参:a相当于变量名,用来接收变量值
        print(a)
     
    index(a)  # 实参:相当于变量值,将值传入形参
    

    3.2 传参方式

    3.2.1 位置参数:

    通过位置进行传参

    def index(a, b):
        print(a, b)
     
    index(1, 3)  # 位置参数
    

    3.2.2 关键字参数

    指定关键字传参

    def index(a, b):
        print(a, b)
     
    index(a=1, b=3)  # 关键字参数
    

    3.2.3 位置参数和关键字参数混用

    • 位置参数一定要写在关键字参数之前

    • 连用的时候,不要对同一个形参重复赋值

    def index(a, b, c, d):
        print(a, b, c, d)
     
    index(1, 2, c=3, d=4)  # 位置参数和关键字参数混用
    
    # 定义在* 和**之间
    # 在给命名关键字传值的时候一定要以关键字形式传递
    # 关键字参数一定不能放在位置参数前面
    def index(x, y, z, a=1, *args, b, **kwargs):
        print(x, y, z)
        print(args)
        print(a, b)
        print(kwargs)
    
    index(1, 2, 3,354353, 4342, 3213123, b=222, c=333, d=444)
    

    3.2.4 默认参数

    默认参数:

    • 在定义函数阶段就已经传入参数
    • 如果在实参的时候传入了一个新的参数,就会使用新参数
    • 默认参数在传值的时候,不要将可变类型当做参数传递

    应用场景:

    • 当参数对应值重复出现的情况下使用默认参数
    def reg(username, password, gender):
        print(f'用户名:{username} 密码:{password} 性别:{gender})
     
     
    reg('tank', 'dsb', 'male')
    reg('jason', 'dsb', 'male')
    reg('engon', 'dsb', 'male')
     
     
    # 将gender的实参定义为male
    def reg(username, password, gender='male'):
        print(f'用户名:{username} 密码:{password} 性别:{gender})
     
     
    reg('tank', 'dsb')  # 默认为male
    reg('jason', 'dsb')
    reg('engon', 'dsb')
    reg('胡晨阳', 'dsb', 'female')  # femal会去修改male,为femal
    

    4 可变长参数

    官方规定使用*args,但是只要有*就有可以有变长参数的效果

    可变长参数:

    • *args接收所有溢出的位置参数
      • 接收的值都可以被存入一个元组
    • 形参的值前面有*可以打散传入的容器类型
      • 打散字典只能返回key
    • **kwargs:接收所有溢出的关键字参数
      • 接收的值都被存入一个字典
    # 位置参数
    def index(a, b, c, d, *args):
        print(a, b, c, d, *args)
     
    index(1, 3, 4, 5, 6, 7, 8, *[8, 9])
     
    # 关键字参数
    def index(a, b, c, d, **kwargs):
        print(a, b, c, d, *kwargs)
     
    index(1, 3, c=4, d=5, e=6)
    
  • 相关阅读:
    mysql数据库连接报错ERRoR1130(HY000)
    Ladap相关知识精简资料
    Github访问慢,解决方案
    IIS短文件漏洞成因,及修复方案
    Kali linux简单匿名处理方法
    NHibernate实践总结(二) 在mapping文件中设置抓取策略对HQL与Criteria造成不同影响的测试与验证
    NHibernate 3.x新功能实践(二) QueryOver(下)
    NHibernate实践总结(三)HQL的thetastyle join对无关联实体的连接与应用
    NHibernate实践总结(一)
    Scott Hanselman's 2009 NET与Windows终极开发工具列表
  • 原文地址:https://www.cnblogs.com/cnhyk/p/11838394.html
Copyright © 2011-2022 走看看