鱼C论坛

 找回密码
 立即注册
查看: 1631|回复: 1

[已解决]怎么在提前定义的子模块里用 后面主模块里生成的变量?

[复制链接]
发表于 2023-4-28 09:45:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
反过来,先定义子函数,但子函数中要用到 主函数中产生的变量。 不能直接用? 只能通过参数1传递给子函数吗?  那如果这种变量多,怎么办?

def sub1(参数1):

   变量_文件主名


if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名
最佳答案
2023-4-28 09:55:21
在这种情况下,确实需要将主函数中产生的变量作为参数传递给子函数。子函数不能直接访问主函数中的局部变量。如果变量很多,可以考虑以下几种方法来简化代码:

1. 使用元组、列表或字典将多个变量打包为一个参数传递给子函数。例如:
def sub1(args):
    变量_文件主名 = args[0]
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1((变量_文件主名,))

2. 使用类将相关变量组织起来。这样,您可以在实例化类时将变量作为类的属性传递给子函数。
class MyClass:
    def __init__(self, 变量_文件主名):
        self.变量_文件主名 = 变量_文件主名

    def sub1(self):
        # 在这里使用 self.变量_文件主名
        pass

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        my_instance = MyClass(变量_文件主名)
        my_instance.sub1()

3. 使用 *args 或 **kwargs 在子函数中接收可变数量的参数。这样,您可以在调用子函数时将任意数量的参数传递给它。
def sub1(*args):
    变量_文件主名 = args[0]
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1(变量_文件主名, 参数2, 参数3, ...)

或者使用关键字参数:
def sub1(**kwargs):
    变量_文件主名 = kwargs['变量_文件主名']
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1(变量_文件主名=变量_文件主名, 参数2=值2, 参数3=值3, ...)

这些方法可以帮助您更有效地管理和传递多个变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-28 09:55:21 | 显示全部楼层    本楼为最佳答案   
在这种情况下,确实需要将主函数中产生的变量作为参数传递给子函数。子函数不能直接访问主函数中的局部变量。如果变量很多,可以考虑以下几种方法来简化代码:

1. 使用元组、列表或字典将多个变量打包为一个参数传递给子函数。例如:
def sub1(args):
    变量_文件主名 = args[0]
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1((变量_文件主名,))

2. 使用类将相关变量组织起来。这样,您可以在实例化类时将变量作为类的属性传递给子函数。
class MyClass:
    def __init__(self, 变量_文件主名):
        self.变量_文件主名 = 变量_文件主名

    def sub1(self):
        # 在这里使用 self.变量_文件主名
        pass

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        my_instance = MyClass(变量_文件主名)
        my_instance.sub1()

3. 使用 *args 或 **kwargs 在子函数中接收可变数量的参数。这样,您可以在调用子函数时将任意数量的参数传递给它。
def sub1(*args):
    变量_文件主名 = args[0]
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1(变量_文件主名, 参数2, 参数3, ...)

或者使用关键字参数:
def sub1(**kwargs):
    变量_文件主名 = kwargs['变量_文件主名']
    # 其他操作

if __name__ == "__main__":
    for home, dirs, files in os.walk("./"):
        变量_文件主名 = ...
        sub1(变量_文件主名=变量_文件主名, 参数2=值2, 参数3=值3, ...)

这些方法可以帮助您更有效地管理和传递多个变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 13:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表