Распаковка кортежа python в функции python - PullRequest
1 голос
/ 25 апреля 2020

Использование Visual Studio & http://pythontutor.com/visualize Я не могу получить результат для функции размера файла из-за следующей ошибки: Ошибка типа: file_size () принимает 1 позиционный аргумент, но задано 3. Код ниже.

#this function stores information about a file, its name, its type and its size in bytes.
def file_size(file_info):
    name, file_type, size = file_info
    return("{:.2f}".format(size/1024))

print(file_size('Class Assignment','docx', 17875)) #Should print 17.46
print(file_size('Notes','txt', 496)) #Should print 0.48
print(file_size('Program','py', 1239)) #Should print 1.21

Я, хотя распаковка (file_info) внутри функции переопределит 1 позиционный аргумент, но 3 были выданы ошибки. Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 25 апреля 2020

Поместите значения в кортеж так:

print(file_size(('Class Assignment','docx', 17875)))
print(file_size(('Notes','txt', 496)))
print(file_size(('Program','py', 1239)))

Таким образом, вы передаете одну переменную

1 голос
/ 25 апреля 2020

В настоящее время вы передаете три различных аргумента ... вместо этого передайте его как один аргумент, который является кортежем:

print(file_size( ('Class Assignment','docx', 17875) ))

В качестве альтернативы, вы можете изменить объявление функции, чтобы захватить различные Аргументы в кортеж при вызове:

def file_size(*file_info):
    ...

Тогда вызов его таким, какой вы есть, действителен.

0 голосов
/ 25 апреля 2020

Если вы хотите сохранить функцию с одним параметром, попробуйте назначить кортеж переменной и передать его как

file_size (* varname)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...