zoukankan      html  css  js  c++  java
  • python基础一 day9 函数升阶(1)

    函数
    可读性强 复用性强
    def 函数名():
    函数体
    return 返回值
    所有的函数 只定义不调用就一定不执行
    先定义后调用

    函数名() #不接收返回值
    返回值 = 函数名() #接收返回值

    返回值
    没有返回值 :默认返回None
    不写return:函数内的代码执行完毕自动结束
    只写return:结束一个函数
    return None
    返回一个值 :结束了函数且返回一个值,可以是任意的值
    返回多个值 : 多个值之间用逗号隔开,接收的时候可以用一个变量接收(元祖),也可以用等量的多个变量接收

    def f(a):
    return '栗子'

    ret = f('苹果')
    print(f('苹果'))

    参数
    形参 定义函数的时候
    位置参数 :必须传
    *args :动态参数 可以接收任意多个按位置传入的参数,得到的args是一个元祖,kwargs是一个字典
    默认参数 : 可以不传 —— 陷阱
    **kwargs : 动态参数 可以接受任意多个按关键字传入的参数
    实参 调用函数的时候
    按照位置传参数
    按照关键字传参数
    可以混用 位置参数必须在关键字传参之前
    不能对一个参数重复赋值


    def 娃哈哈(*args):
    print(args)

    # 娃哈哈(1,2,3,4)
    l = [1,2,3,4]
    娃哈哈(*l)


    默认参数陷阱:
    def qqxing(k,l = {}):
    # l.append(1)
    l[k] = 'v'
    print(l)

    qqxing(1) #[1]
    qqxing(2) #[1,1]
    qqxing(3) #[1,1,1]


    def s(ss=[]):
    ss.append(1)
    print(ss)
    s()
    s([])
    s()
    结果:

    [1]
    [1]
    [1, 1]



    # 如果默认参数的值是一个可变数据类型,
    # 那么每一次调用函数的时候,
    # 如果不传值就公用这个数据类型的资源





  • 相关阅读:
    OpenMP
    linux下编写C++程序播放音频
    Canny Edge Detector
    部署服务器
    第五周--论文泛读
    AI研习社“看图猜作者”优秀代码技术总结
    Neural Multimodal Cooperative Learning Toward Micro-Video Understanding学习笔记
    第二次作业:卷积神经网络 part 2
    循环神经网络
    ORB-SLAM学习笔记
  • 原文地址:https://www.cnblogs.com/wang-tan/p/11041858.html
Copyright © 2011-2022 走看看