Python 具有不同文件和在函数之间传递变量的类

Python 具有不同文件和在函数之间传递变量的类,python,Python,如何将多个变量传递给不同文件中的函数 我注意到有些文件只有函数(它们被分组在单个文件中)。例如,一个文件用于控制安装(具有用于新安装、更新安装等的功能),另一个文件用于授予访问权限(创建新用户、删除用户、更新用户)。这些功能接收大量变量,例如: access_tool.add_user(cur,con,env,family,iserver,version,login, password,prefix,proxyUser,proxyPass,

如何将多个变量传递给不同文件中的函数

我注意到有些文件只有函数(它们被分组在单个文件中)。例如,一个文件用于控制安装(具有用于新安装、更新安装等的功能),另一个文件用于授予访问权限(创建新用户、删除用户、更新用户)。这些功能接收大量变量,例如:

access_tool.add_user(cur,con,env,family,iserver,version,login,
                           password,prefix,proxyUser,proxyPass,
                           proxyServer,user,pass)
因此,access_工具(文件)和函数(get_add_info)从另一个文件接收这些变量,这些变量是动态的(来自数据库查询的结果)。如何将这些值优雅地传递给不同文件中的函数

示例:

我们有两个重要文件:

  • a、 属性-包含数据库信息和凭据
  • mainfile.py-主文件,用于执行函数,例如:
    • 添加用户ENV newuser newuserpass
  • add user从文件access\u tool.py调用名为add\u user的函数

    mainfile.py所做的是(对于本例中的用户创建),这取决于通过输入发送的环境,它将查询数据库以选择要添加用户的X服务器,并将结果存储到VAR中(用于数组循环):

    因此,这些VAR将从loop、5、10或更多服务器接收要添加的内容。唯一的静态变量是newuser和newuserpass(从输入接收)

    我唯一的问题是决定如何将变量传递(或共享)到另一个文件上的函数


    工作中的一些人建议我将所有这些都保存在同一个文件中,而不是为每个类创建多个文件,而是为所有类创建一个文件。

    这取决于值的存储方式。例如,如果从配置文件读取配置值,并且将配置值存储为字典,则可以使用字典解包将值传递到方法调用中。例如,
    访问工具。添加用户(**设置)

    如果您想在多个函数之间传递变量,我建议您查看传递对象。 .
    如果你想做更复杂的事情,你一定要看看这个模块

    Python中的文件的概念很模糊。短语“来自文件的变量”没有任何意义。您必须知道这些变量是如何实例化的,它们的作用域是什么

    Python中的值不存在于文件中,它们存在于内存中,并由变量指向

    对于包含大量参数的函数,通常使用命名参数:

    def fun(**args):
      param1 = args.get('param1', 'default_value')
      param2 = ... # etc
    
    fun(param1='val1', param2 = 'val2')
    
    这可能就是你想要的优雅:)

    因此,您的代码可能如下所示:

    def main():
      #initialization 
      import access_tool
      con = database_connection()
      servers = query_database_for_servers()
    
      for server in servers:
        #assume server is a dict of values
        access_tool.add_user ( **server )
    
    def add_user ( **params ):
       # connect to params['server'] using params['env']
       # and add user with other params[]
    
    您的
    add\u user
    功能可以修改如下:

    def main():
      #initialization 
      import access_tool
      con = database_connection()
      servers = query_database_for_servers()
    
      for server in servers:
        #assume server is a dict of values
        access_tool.add_user ( **server )
    
    def add_user ( **params ):
       # connect to params['server'] using params['env']
       # and add user with other params[]
    

    您的英语水平远远高于平均水平:)@Thales,高于StackOverflow用户的平均水平。已编辑,以修复语法和格式:)但是当前解决方案有什么问题?你想修复什么,为什么?代码的编写方式。。。不容易阅读,不遵循PEP8。既然我必须组织起来,我会尽量做到这一点。用更多信息更新问题