Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以使用函数参数指定变量吗?_Python - Fatal编程技术网

Python 我可以使用函数参数指定变量吗?

Python 我可以使用函数参数指定变量吗?,python,Python,假设我有一个加载数据的函数,如下所示: def load(filename, data): try: global isFile with open(filename, 'rb'): data = pickle.load(filename) isFile = True except OSError as err: print(error() + ': ' + err) 我可以使用数据参数指定一个列表,比如密码吗?例如,我可以调用函数load(fi

假设我有一个加载数据的函数,如下所示:

def load(filename, data):
try:
    global isFile
    with open(filename, 'rb'):
        data = pickle.load(filename)
    isFile = True
except OSError as err:
    print(error() + ': ' + err)

我可以使用数据参数指定一个列表,比如密码吗?例如,我可以调用函数load(filename,PASSWORD)将数据分配给PASSWORD吗?

如果PASSWORD是一个全局变量,则可以直接请求, 如果是局部变量,则不可能

但这并不意味着应该这样做-如果您已经知道调用函数的代码行中的变量,只需执行以下操作:

PASSWORD=load(文件名)
def加载(文件名、数据):
尝试:
全局isFile
打开时(文件名为“rb”):
data=pickle.load(文件名)
isFile=True
除OSError as err外:
打印(错误()+':'+错误)
data=None#或只是提出错误。
返回数据
理想情况下,函数不应该更改传递给它的数据对象,更不用说更改调用上下文中的变量了——上述赋值的优点是,变量的更改在受影响的位置是可见的,并且可以控制

如果您的单词“password”本身是数据,并且是字符串,那么您更可能不希望这些是变量,而是希望有一个保存所有数据的字典,这样您就可以访问与每个名称相关联的值(例如“password”),而无需破坏规则:

my_data = {}
key = "password"

...
my_data[key] = load(filename)

当数据作为参数传递给函数时,可以将数据分配给列表等可变对象。包括示例:

def load(filename, data):
    #load that data from filename
    passwords_from_file = ['a','b','c']
    for i in passwords_from_file:
        data.append(i)
        
data_outside_function = []
load("",data_outside_function)
print(data_outside_function)
这张照片是:

['a', 'b', 'c']

如果您的意思是这样的话,您不能将某些内容指定给参数变量作为从函数中传递信息的方式。但是您可以将列表传递到函数中,以便将内容添加到其中。是的,您可以指定任何类型的变量作为数据参数。在这种情况下,密码是一个全局字典,它可以从保存文件(此处)或新文件中获取数据,因此我希望函数直接更改字典。但是,保存文件必须同时包含密钥(帐户)和值(密码)。谢谢你的帮助。