文章目录
- 前言
- 1、全局变量与局部变量
- 2、python函数的传参
- 2.1 实参与形参
- 2.2 可变数据与不可变数据
- 2.3 传值(假的传值)与传引用
- 2.3.1 传值(本质上还是传引用---由于python不可变数据的特性就变成和C语言里面传值的效果一样了)
- 示例一:对于不可变数据类型,如果你将一个变量作为参数传递给函数,在函数内部对该参数进行修改不会影响到函数外部的原始变量。
- 示例2:不要与有返回值混淆
- 示例3:如果我非要让示例1输出4呢,这就要用全局变量
- 方法1:在函数里面声明是全局变量(用global)
- 方法二:类里面用self属性在函数里面定义变量(相当于也是在函数里面声明了是全局变量)
- 2.3.2 传引用
- 2.4 传值与传引用本质统一(重要)
- 2.4.1 函数内部进行赋值操作会发生什么
- 2.4.2 修改操作就舒服多了,随便造(当然别赋值哈哈哈)
- 总结
前言
在python编程中函数的传参需要特别注意,有时会忘记,在这里写篇文章记录一下。每次查资料发现很多都是没有说明白的,作者自己都是稀里糊涂的。因此直接自己在这里写一篇注意一下。
1、全局变量与局部变量
在Python中,全局变量和局部变量是两种不同范围的变量。
(1) 全局变量:
- 在函数外部定义的变量称为全局变量。
- 全局变量可以在程序的任何地方被访问,包括函数内部。
- 在函数内部可以使用全局变量,但要使用
global
关键字声明才能修改全局变量的值。
(2) 局部变量:
- 在函数内部定义的变量称为局部变量。
- 局部变量的作用域仅限于函数内部,外部无法直接访问。
- 局部变量在函数执行结束后会被销毁,不能在函数外部访问。
下面是一个示例代码来演示全局变量和局部变量的用法:
# 全局变量
global_var = 10def my_function():# 局部变量local_var = 20# 调用函数
my_function()# 在函数外部访问全局变量
print("Global variable:", global_var)
# 试图在函数外部访问局部变量会引发 NameError
# print("Local variable:", local_var)
在这个示例中,global_var
是全局变量,在函数内外都可以访问。而 local_var
是在函数内部定义的局部变量,只能在函数内部访问。
2、python函数的传参
2.1 实参与形参
在函数的定义和调用中,会涉及到两个概念:实参(arguments)和形参(parameters)。
(1) 形参(Parameters):在函数定义中,形参是指在函数定义时用来接收传递给函数的值的变量。形参位于函数定义的括号内部,作为函数的输入。形参的值在函数调用时由实参提供。例如,在下面的函数定义中,x
就是一个形参:
def my_function(x):# do something with x
(2)实参(Arguments):在函数调用时,实参是指传递给函数的具体值或变量。实参是函数调用时提供给形参的值。实参可以是常量、变量、表达式或者其他函数的返回值。例如,在下面的函数调用中,10
是一个实参:
my_function(10)
在函数调用时,实参的值会被传递给函数中对应的形参,函数体内部可以使用这些值进行计算或者其他操作。
2.2 可变数据与不可变数据
数据类型 | 描述 |
---|---|
可变数据 (列表、字典、集合) | 指变量所指向的内存地址处的值是可以改变的 |
不可变数据(整数、浮点数、布尔类型、字符串、元组) | 指变量所指向的内存地址处的值是不可以改变的 |
【注1】:关于自定义类是可变数据还是不可变数据,这完全取决于我们的创建方式