In [1]: #欢迎来到“只读课堂”!
In [2]: #今天我们来看一下上一节课留的问题( In[23] ):函数通过参数获取我们的值,函数中改变了参数的值,那么我们传递进去的值会改变吗?
In [3]: #A:如果变量是不可变类型的,则不会改变;如果是可变类型的,它就会改变。
In [4]: #演示一下便可知:
In [5]: def test(varibal):
...: varibal = 100
...: return varibal
...:
In [6]: var = 1
In [7]: test(var)
Out[7]: 100
In [8]: print(var)
1
In [9]: def test(varibal):
...: varibal.append(100)
...: return varibal
...:
In [10]: var = []
In [11]: test(var)
Out[11]: [100]
In [12]: var
Out[12]: [100]
In [13]: #它还是不变的。
In [14]: #但是我们不建议对可变类型在函数内进行更改,建议用函数返回值进行重新赋值。
In [15]: #我们通常的做法是给外面的变量重新赋值:
In [16]: def test(varibal):
...: temp = varibal.copy()
...: temp.append(100)
...: return temp
...:
In [17]: var = []
In [18]: var = test(var)
In [19]: var
Out[19]: [100]
In [20]: #如果形成习惯的话,就可以知道,这样写更可以理解一些。
In [21]: #——————————————————————————————————————————————————————————————————————
In [22]: #参数的收集
In [23]: def test(name, age, *args, **kwargs):
...: print(name, age, *args, **kwargs)
...:
In [24]: test('wong', 12)
wong 12
In [25]: test('wong', 12, 23, 'lkl', [23,34])
wong 12 23 lkl [23, 34]
In [26]: dict_varibals = {
...: 'weight':120,
...: 'height':175
...: }
In [27]: test('wong', 12, dict_varibals)
wong 12 {'weight': 120, 'height': 175}
In [28]: #单星号(*)主要是收集关键字的参数,双星号(**)主要是收集位置参数。
In [29]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")
本次“只读课堂”的python教程就到这了,欢迎继续收看!