如何在不传递Python参数的情况下在另一个函数中使用函数变量?

时间:2017-11-01 03:14:36

标签: python

在下面的函数中,如何在chat和chat1中使用pim函数的参数而不将它们作为参数传递?

base.py:

def pim(mode, tag, population_file, variable_file, aggregation, user, 
        passw, email, working_schema, output_schema):

    print mode
    print tag
    print population_file
    print variable_file
    print aggregation
    print user
    print passw
    print email
    print working_schema
    print output_schema


    chat()
    chat1()

我尝试将from base import *用于chat.py(其中创建了chat()),但它无法识别。我想知道是否有办法访问参数而不将它们作为参数传递?

2 个答案:

答案 0 :(得分:0)

我觉得你避免传递参数的原因是有一个 bloody long 参数列表。

您实际上可以将函数pim更改为以下内容:

def pim(*args):
    print(args[0])
    print(args[1])
    print(args[2])
    print(args[3])
    chat(args)
    chat1(args)
# You can call this function by 
pim(mode,tag,population_file,variable_file,aggregation,user,passw,email,working_schema,output_schema)

或者您可以使用可选参数格式,如下所示:

def pim(**kwargs):
    print(kwargs['mode'])
    print(kwargs['tag'])
    print(kwargs['population_file'])
    print(kwargs['variable_file'])
    chat(kwargs)
    chat1(kwargs)
# and you can call your function by
pim(mode='1', tag='2', 'population_file'=3, 'variable_file'=4)

或者您可以使用global关键字使参数全局可用,但不建议使用此解决方案。

答案 1 :(得分:0)

您可以将输入参数存储在变量中并使变量成为全局变量,例如:

mode = ""

def pim(mode,tag,population_file,variable_file,aggregation,user,passw,email,working_schema,output_schema):

    globals()['mode'] = mode

    chat()
    chat1()