zoukankan      html  css  js  c++  java
  • 函数

    一 函数的定义、语法、调用

    定义

    函数: 对代码块和功能的封装和定义

    语法

    我们使用def关键字来定义函数, 函数的定义语法:

    def 函数名():
        函数体

    函数名的命名规则和使用和变量基本一样

    函数体:函数被执行之后要执行的代码

    调用

    使用函数名可以调用函数

    写法:函数名()

    二 函数的返回值

    1.函数遇到return,此函数结束,不再继续执行

    2.给函数的调用者一个访问结果

    3.函数的返回值可以有多个结果

    4.如果不写return,或者return后什么都不写,那么返回None

    5.如果返回是多个结果,则调用者会接收一个tuple,可以直接解构成多个变量

    三 函数的参数

    定义

    参数:函数在调用的时候制定具体的一个变量的值,就是参数

    语法

    def 函数名(参数列表):
        函数体

    参数

    分类

    1.实参

    位置参数

    按照形参的参数位置, 给形参传值

    def yue(chat, address, age): # 形参
        print(chat, address, age)
    yue("微信","北京","20")

    关键字参数

    按照形参的名字给形参传值

    yue(chat="微信", age=18, address="北京") # 关键字参数.

    混合参数

    即用位置参数, 也用关键参数

    # 混合参数
    yue("微信", age=18, address="上海") # 正确.第一个位置赋值给chat, 后⾯的参数开始
    指定关键字.
    yue(age="18", "微信", address="广") # 错误, 最开始使用了关键字参数, 那么后⾯的
    微信的位置就串了, 容易出现混乱

    2.形参

    1. 位置参数

    按照位置来赋值

    def yue(chat, address, age):
        return 0

    2. 默认值参数 

    在函数声明的时候,就可以给出函数参数的默认值,在调用的时候可以给出具体的值,也可以不给值,使用默认值

    def yue(chat, address, age=18):
        return 0

    动态参数

    1.动态接收位置参数

    *args

    def chi(*food):
        print("我要吃", food)
    chi("米饭", "扬州炒饭")
    结果:
    我要吃 ('米饭', '扬州炒饭') # 多个参数传递进去. 收到的内容是元组tuple

    2.动态接收关键字参数

    **kwargs

    def func(**kwargs):
         print(kwargs)
    func(a=1, b=2, c=3)
    func(a=1, b=2)
    结果:
    {'a': 1, 'b': 2, 'c': 3}
    {'a': 1, 'b': 2}

    最终顺序(*): 位置参数 > *args > 默认值参数 > **kwargs 

    def fun(*args):
        print(args)
    lst = [1, 4, 7]
    fun(lst[0], lst[1], lst[2])
    fun(*lst) # 可以使用*把1个列表按顺序打散
    s = "臣妾做不到"
    fun(*s) # 字符串也可以打散, (可迭代对象)

    在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.

    在形参的位置上的* 表示把接收到的参数组合成一个元组

    如果是一个字典, 那么也可以打散. 不过需要用两个*

    def fun(**kwargs):
     print(kwargs)
    dic = {'a':1, 'b':2}
    fun(**dic)
  • 相关阅读:
    blk_update_request: I/O error, dev fd0, sector 0
    将MySQL数据迁移到Redis
    专职DBA-MySQL DAL(Data Access Layer)中间件总结
    搞笑聊天(一)
    看图写话(一)
    NFS存储服务
    rsync备份服务
    专职DBA-使用Python操作MySQL数据库
    如何解决SecureCRT无法选择Monaco等其他字体
    MySQL架构类型
  • 原文地址:https://www.cnblogs.com/zhao-ting/p/9444156.html
Copyright © 2011-2022 走看看