python在函数内调用其他函数并修改参数的值,利用全局变量实现

因为要在原有的函数基础上增加线程进行更改,以减少I/O操作消耗的时间,而创建线程后想要使用就需要将相关部分包装成为一个函数模块,然后在主函数(原函数)里进行调用。

由于调用的包装的函数内部需要几个能够不断调用并且保存值的变量,同时这个线程又是不断在for循环内部进行的。

   thread = threading.Thread(target=sava_img,args=(im0,compare_thresh,total_frame,vid_path))
                    thread.start()

那么如何实现让变量能够随着函数的调用进行改变,并且保存下来能够再次使用呢?

首先我们要确定的是,在主函数调用的函数有哪些变量是需要主函数里的变量作为参数的传递的,其次确定有哪些变量是需要作为全局变量使用的,这些变量在下一次调用函数的时候可以直接。不过需要注意的是,我们定义的函数是在哪里需要使用哪里就定义为全局变量。

将全局变量的默认值写在所有函数之前不然可能会报错,

def sava_img(im0,compare_thresh,total_frame,vid_path):
    global selfold_im0
    global frame_cnt
    global vid_writer

通过全局变量的控制可以实现在主函数里直接调用其他函数并且保存覆盖的值。

在线程传递值的过程中需要注意的是传递的值要和相应的参数对应起来,并且记住主函数传递给调用函数的值即使在调用函数里改变却不会改变主函数原变量的值,这是由于Python特有的传对象方式导致的。在python中所有的变量都可以看做是一个对象,当变量对象传递给参数时会在函数的内部生成一个新的属于这个函数的对象,即使这个对象的值改变了也不会改变原有对象的值,这一点需要注意。

总结如下:

1、在一个函数里同一个变量调用其他函数时作为参数传入时即使在被调用的函数改变了值但是并未改变主函数的这个传入的变量的值。

2、如果被调用函数被反复调用,并且要根据函数内部的数据进行相关计算,那么就需要设置全局变量协助运行,不然无法保存计算的数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋冬晚归客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值