Skip to content

Commit 37e75d0

Browse files
authored
Update README.md
1 parent 1deb3d2 commit 37e75d0

File tree

1 file changed

+56
-2
lines changed

1 file changed

+56
-2
lines changed

README.md

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ python最先的格式化字符串方法是%,但他的致命缺点是支持的
149149
* [字符串处理支持多种操作](https://www.runoob.com/python3/python3-string.html)
150150
* round()保留几位小数 返回浮点数x的四舍五入值。
151151
* eval()神奇公式: 用来执行一个字符串表达式,并返回表达式的值。
152+
153+
152154
## OOP
153155
### *args and **kwargs
154156
* 当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数
@@ -172,7 +174,9 @@ python最先的格式化字符串方法是%,但他的致命缺点是支持的
172174
cabbage = vegetable
173175
apple = fruit
174176
```
175-
未完待续
177+
正如前面所说的,args类型是一个tuple,而kwargs则是一个字典dict,并且args只能位于kwargs的前面。
178+
179+
176180
* 正则表达式
177181
* `re.match(pattern, string, flags=0)` 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None
178182
* pattern:匹配的正则表达式
@@ -191,4 +195,54 @@ python最先的格式化字符串方法是%,但他的致命缺点是支持的
191195
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
192196
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配
193197
```
194-
* 未完待续……
198+
* 未完待续……在 Python 中,参数通常是通过**对象引用**传递的。但理解参数传递时,需要区分**可变类型****不可变类型**
199+
200+
## 基本数据类型(不可变类型)
201+
- **例子:** `int`(整数), `float`(浮点数), `bool`(布尔值), `str`(字符串), `tuple`(元组)
202+
- **行为:** 当你将不可变的数据类型(如整数、浮点数或布尔值)作为参数传递给函数时,实际上传递的是该对象引用的**副本**。这意味着函数不能直接修改原始对象。在函数内部对参数进行的修改,只会影响局部变量的副本,**不会改变函数外部的原始对象**
203+
204+
**例子:**
205+
```python
206+
def modify_value(x):
207+
x = 10
208+
print("函数内部:", x)
209+
210+
a = 5
211+
modify_value(a)
212+
print("函数外部:", a)
213+
```
214+
215+
**输出:**
216+
```
217+
函数内部: 10
218+
函数外部: 5
219+
```
220+
221+
在这个例子中,`a` 在函数外部的值依然是 `5`,因为在函数内部修改的只是局部变量 `x` 的副本。
222+
223+
### 可变数据类型
224+
- **例子:** `list`(列表), `dict`(字典), `set`(集合)
225+
- **行为:** 当你将可变数据类型(如列表或字典)作为参数传递时,传递的是对原始对象的引用。**因此,在函数内部修改对象时,外部的原始对象也会被修改**
226+
227+
**例子:**
228+
```python
229+
def modify_list(lst):
230+
lst.append(4)
231+
print("函数内部:", lst)
232+
233+
my_list = [1, 2, 3]
234+
modify_list(my_list)
235+
print("函数外部:", my_list)
236+
```
237+
238+
**输出:**
239+
```
240+
函数内部: [1, 2, 3, 4]
241+
函数外部: [1, 2, 3, 4]
242+
```
243+
244+
在这个例子中,`my_list` 在函数外部也发生了变化,因为函数内部的 `lst` 和外部的 `my_list` 指向同一个对象。
245+
246+
### 总结
247+
- **不可变类型:** 传递的是值(引用的副本),在函数内部的修改**不会**影响外部的原始对象。
248+
- **可变类型:** 传递的是引用,函数内部对对象的修改****影响外部的原始对象。

0 commit comments

Comments
 (0)