0
code-way | 引用类型的改变
source link: https://benpaodewoniu.github.io/2022/12/01/code-way5/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
可以看一下往期文章。
这里还是以 python 为例
引用类型通过参数传递改变
order = {
"order": {
"order": 1
}
}
def set_order1(order):
order["order"] = 2
def set_order2(order):
order["order"] = 3
if __name__ == '__main__':
order = order.get("order")
set_order1(order)
print(order)
set_order2(order)
print(order)
{'order': 2}
{'order': 3}
order = [
1, 2, 3
]
def set_order1(order):
order[0] = 2
def set_order2(order):
order[0] = 3
if __name__ == '__main__':
set_order1(order)
print(order)
set_order2(order)
print(order)
引用类型传参,参数的变化情况
传参有两种情况,注意下面的区分
import time
import threading
import random
order = {
"order": {
"order": 1
}
}
def set_order1(order):
while 1:
print(order.get("order"))
time.sleep(3)
def set_order2(order):
while 1:
order["order"] = random.randint(1, 100)
print(f"修改 {order.get('order')}")
time.sleep(3)
if __name__ == '__main__':
order = order.get("order")
t1 = threading.Thread(target=set_order1, args=(order,))
t2 = threading.Thread(target=set_order2, args=(order,))
t1.start()
t2.start()
t1.join()
t2.join()
1
修改 26
26
修改 39
39
修改 14
14
修改 30
import time
import threading
import random
order = {
"order": {
"order": 1
}
}
def set_order1(order):
while 1:
print(order)
time.sleep(3)
def set_order2(order):
while 1:
order["order"] = random.randint(1, 100)
print(f"修改 {order.get('order')}")
time.sleep(3)
if __name__ == '__main__':
order = order.get("order")
t1 = threading.Thread(target=set_order1, args=(order.get("order"),))
t2 = threading.Thread(target=set_order2, args=(order,))
t1.start()
t2.start()
t1.join()
t2.join()
1
修改 15
1
修改 17
1
修改 91
1
修改 73
上面的第二种方式,如果传的是引导参数的最后的值,是不会跟着变化的,程序中用 int
举例,实际上,将 int
换成你自定义的 class
结果表现都是一样的。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK