Python3 的参数对象
Python3的函数参数对象,可分为两种类型:
- 不可变对象:int(整形)、str(字符串)、float(浮点型)、tuple(元组)
- 可变对象:dict(字典)、list(列表)、 set(集合)
参数是可变对象时,类似于C语言中的指针类型。
示例:
可变对象为函数参数时:
def send(lst:list) :
print(f"send: {lst}")
def func01(lst:list) :
print(f"run func01, param is {lst}")
lst.pop()
send(lst)
def func02(lst:list) :
print(f"run func02, param is {lst}")
lst.append("c")
send(lst)
def func03(lst:list) :
print(f"run func03, param is {lst}")
send(lst)
if __name__ == "__main__" :
# 参数是可变对象,将改变值
lst = ["a","b"]
func01(lst) # lst的值改变,移除最后的元素
print(lst)
func02(lst) # lst的值改变,增加元素
print(lst)
func03(lst)
print(lst)
""" 执行结果如下:
run func01, param is ['a', 'b']
send: ['a']
['a']
run func02, param is ['a']
send: ['a', 'c']
['a', 'c']
run func03, param is ['a', 'c']
send: ['a', 'c']
['a', 'c']
"""
不可变对象为函数参数时:
# 参数是不可变对象
def send_str(s:str) :
print(f"send_str: {s}")
def func11(s:str) :
print(f"run func11, param is {s}")
s = "func11"
send_str(s)
def func12(s:str) :
print(f"run func12, param is {s}")
s = s + ", add char"
send_str(s)
def func13(s:str) :
print(f"run func13, param is {s}")
send_str(s)
if __name__ == "__main__" :
# 参数是不可变对象,值保持不变
s = "abcd"
func11(s) # 改变形参的值,并不改变变量的值
print(s)
func12(s) # 改变形参的值,并不改变变量的值
print(s)
func13(s)
print(s)
""" 执行结果如下:
run func11, param is abcd
send_str: func11
abcd
run func12, param is abcd
send_str: abcd, add char
abcd
run func13, param is abcd
send_str: abcd
abcd
"""
- 上一篇: bash和dash的区别(及示例)
- 下一篇: Python3 中的单*和双**