zoukankan      html  css  js  c++  java
  • 在函数中最好不要用可变类型当参数

    函数中参数的运行
    在Python中当函数被定义时,默认参数只会运算一次,
    而不是每次被调用时都会重新运算。
    你应该永远不要定义可变类型的默认参数。除非你知道在做什么

    foo = ['hi']
    print(foo)
    # Output: ['hi']
    
    bar = foo
    bar += ['bye']
    print(foo)
    print(bar)
    # Output: ['hi', 'bye']
    '''
    这个情况只是针对可变数据类型。
    当你将一个变量赋值为另一个可变类型的变量时,
    对这个数据的任意改动会同时反映到这两个变量上去。
    新变量只不过是老变量的一个别名而已。
    '''
    def add_to(num, target=[]):
        target.append(num)
        return target
    
    add_to(1)
    # Output: [1]
    
    add_to(2)
    # Output: [1, 2]
    
    add_to(3)
    print(add_to(42)) # [1, 2, 3, 42]
    print(add_to(42)) # [1, 2, 3, 42, 42]
    # Output: [1, 2, 3]
    '''
    在Python中当函数被定义时,默认参数只会运算一次,
    而不是每次被调用时都会重新运算。
    你应该永远不要定义可变类型的默认参数,除非你知道你正在做什么
    '''
    def add_to(element, target=None):
        if target is None:
            target = []
        target.append(element)
        return target
    # 现在每当你在调用这个函数不传入 target 参数的时候,一个新的列表会被创建
    print(add_to(42)) # [42]
    print(add_to(42)) # [42]
    
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    Vue的watch监听事件
    Vue路由-命名视图实现经典布局
    Vue中使用children实现路由的嵌套
    Vue中router两种传参方式
    mysql 压缩备份 压缩还原 命令
    【转】SVN branches trunk 合并 讲解
    svn 更新提交文件冲突
    mysql 导出表数据表结构
    利用jenkins打造通过自定义参数更新svn 指定文件任务
    centos 7 安装jira 破解
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15272815.html
Copyright © 2011-2022 走看看