zoukankan      html  css  js  c++  java
  • 函数

    # 函数的定义和调用
    def test(x):
    x += 1
    return x

    def test():
    x = 3
    x += 1
    return x

    # notes: 这里第二个test会覆盖第一个test函数的定义
    print(test) # <function test at 0x10217d730>
    print(type(test)) # <class 'function'>
    # print(test(1)) # 这里会报错
    print(test())


    # 函数的作用?
    """
    while True:
    if cpu利用率 > 90%:
    # 发送邮件
    连接邮件服务器
    发送邮件
    关闭连接
    if 内存利用率 > 90%:
    # 发送邮件
    连接邮件服务器
    发送邮件
    关闭连接
    if 磁盘利用率 > 90%:
    # 发送邮件
    连接邮件服务器
    发送邮件
    关闭连接

    =>

    def 发送邮件():
    # 发送邮件
    连接邮件服务器
    发送邮件
    关闭连接
    while True:
    if cpu利用率 > 90%:
    发送邮件()
    if 内存利用率 > 90%:
    发送邮件()
    if 磁盘利用率 > 90%:
    发送邮件()

    1.代码重用
    2.保持一致性,维护性
    3.可扩展性
    """

    
    
    # 函数返回值
    def test01():
    msg = "hello"

    def test02():
    msg = "hello"
    return msg

    def test03():
    msg = "hello"
    return 1,2,3,4,[5,6],(7,8)

    print(test01()) # None None
    print(test02()) # hello object
    print(test03()) # (1, 2, 3, 4, [5, 6], (7, 8)) 放到一个元组里边 tuple


    # 形参
    # 形参变量只有在被调用时才分配内存单元,调用结束时,即可释放所分配的内容.所以只在函数内部有效.函数调用结束后返回主调用函数后就不能再使用形参变量.
    def cal(x, y):
    res = x ** y
    return res
    print(cal(2, 2))
    a = 2
    b = 3 # 实参
    print(cal(a, b))

    # 传参
    def test(x, y, z):
    print(x, y, z)
    # test(1, 3) # 缺少一个报错
    test(1, 2, 3) # 位置传参,按顺序一一对应,不可缺少
    test(y=2, x=5, z=1) # 关键字传参,顺序灵活,不可缺少
    # test(1, y=2, 3) # 报错
    test(1, y=2, z=3) # 混合使用,位置参数必须在关键字参数的左边,而且有顺序

    # 默认参数
    def handle(x, type="mysql"):
    print(x, type)
    handle("hello")
    handle("hello", type="sqlite")
    handle("hello", "sqlite")


    # ** 字典 * 列表

    # 参数组 非固定长度的参数 *args
    def test(x, *args):
    print(x, args)
    test(1, 2, 3, 4, 5) # (2, 3, 4, 5)
    test(1) # ()
    test(1, {"name":"alex"}) # 1 ({'name': 'alex'},)
    test(1, ["x", "y", "z"]) # 1 (['x', 'y', 'z'],)
    test(1, *["x", "y", "z"]) # notes!!!: 这里加个*表示,把列表循环一遍赋值给args. ('x', 'y', 'z')
    test(1, *(1, 2, 3)) # (1, 2, 3)
    test(1, *{"name":"value"}) # ('name',) 一个遍历,只能取出来key

    # 关键字参数 **kwargs
    def test(x, **kwargs):
    print(x)
    print(kwargs)
    test(1, y=2, z=3) # {'z': 3, 'y': 2}

    # *args, **kwargs
    def test(x, *args, **kwargs):
    print(x, args, kwargs)
    test(1,1,2, 3, y=2, z=3) # 1 (1, 2, 3) {'y': 2, 'z': 3}
    test(1, *[1, 2, 3], **{"name":"alex", "age": 18}) # 1 (1, 2, 3) {'age': 18, 'name': 'alex'}







  • 相关阅读:
    python里面的xlrd模块详解以及样例
    关于DOM的事件操作
    python正则表达式去除文本中间的换行符
    文本分类问题汇总
    pip安装问题
    3NF的无损连接和保持函数依赖的分解、BCNF的无损连接的分解
    Pyhton基本图形绘制
    软件过程模型
    常见算法的时间与空间复杂度
    随笔
  • 原文地址:https://www.cnblogs.com/Windows-phone/p/9722195.html
Copyright © 2011-2022 走看看