这段话是什么意思关于参数的

img


如果传入的参数类型是可变类型,如果在函数体中不被改变,则原参数也会被改变?这什么意思咋改变?函数题外部改变 ,换句话说是不是就是如果是不可变类型,在函数体中被改变,也不会变。怎么感觉怪怪的

举例子吧

def f(x):
    x = 2
y = 1
f(y)
print(y)

这个程序输出1,因为整数不可变

def f(x):
    x[0] = 2
y = [1]
f(y)
print(y[0])

这个程序输出2,因为列表可变。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/776429
  • 这篇博客你也可以参考下:在模型评估过程中,有哪些主要的验证方法,他们的优缺点是什么?在自助法的采样过程中,对N个样本进行N次自助采样,当N区域无穷大时最终有多少个数据从未被选择过?
  • 除此之外, 这篇博客: 函数中的 需要注意的是,在定义带有默认值参数的函数时,任何一个默认值参数右边都不能再出现没有默认值的普通位置参数,否则会提示语法错误。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • >>>def demo(a,b,c=1):       # c是默认值参数
           print(a,b,c)
    
    >>>demo(1,2)            
    out:1,2,1
    >>>demo(1,2,3)
    out:1,2,3
    

    ####多次调用函数并且不为默认值参数传递值时,默认值参数只在定义时进行一次解释和初始化,对于列表、字典这样可变类型的默认值参数,这一点可能会导致很严重的逻辑错误。

    >>>def demo(newitem, old_list=[]):
    	   old_list.append(newitem)
    	   print(old_list)
    >>>demo('5', [1, 2, 3, 4])
    out:[1,2,3,4,'5']
    >>>demo('aaa', ['a', 'b'])
    out:['a','b','aaa']
    >>>demo('a')
    out:['a']
    >>>demo('b')
    out['a','b']
    
  • 您还可以看一下 刘建萍老师的人工智能系列课程零基础讲解知识点和实例应用线性回归梯度下降逻辑回归课程中的 讲解机器学中会涉及到的有关数学方面的知识储备有哪些小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    关于参数类型的理解:

    对于可变类型的参数,在函数体内不被修改,原参数的值不会改变。但需要注意的是,对于可变类型的默认参数,每次调用函数时都会复用同一个默认参数,导致多次调用函数时默认参数的值会受到影响。

    对于不可变类型的参数,在函数体内被修改,原参数的值也不会改变。这是因为在Python中,不可变类型的参数在传递时,相当于传递了它的值的一个副本,函数体内操作的是副本而不是原值。

    以下是示例代码:

    # 可变类型参数示例
    def demo(newitem, old_list=[]):
        old_list.append(newitem)
        print(old_list)
    
    demo('5', [1, 2, 3, 4])  # [1, 2, 3, 4, '5']
    demo('aaa', ['a', 'b'])  # ['a', 'b', 'aaa']
    demo('a')  # ['a']
    demo('b')  # ['a', 'b']
    
    # 不可变类型参数示例
    def demo(num):
        num = num + 1
        print(num)
    
    a = 1
    demo(a)  # 2
    print(a)  # 1
    

    针对参考资料中的视频处理代码,这里不作具体讲解,仅简单介绍一下代码中使用的库及函数。

    • cv2:OpenCV库,用于图像和视频处理。
    • face_recognition:人脸识别库。
    • matplotlib:用于显示图像。
    • ffmpy3:用于处理音视频。
    • Image:用于图像处理。

    如果对以上库和函数不熟悉,建议先进行学习和了解。