def func():
message = "Hi "
name = input("Enter the name:")
return message + name
print(func())
def func(name):
message = "Hi " + name
return message
name = input ("Enter the name:")
print (func(name))
Просто не понимаю как разница между вариантами написания может повлиять на код в дальнейшем. В первом случае name просто как переменная, а во втором случае name получается как аргумент (в скобках) функции, но почему-то размещается как переменная не блоке функции и без отступов в начале строки. В первом случае возвращаем maessage + name, во втором только maessage. Эти оба варианта одинаковы или есть какой то нюанс в каждом варианте? Не могу сдвинуться в понимании переменных из-за этого.
Python
В чем разница между этими двумя вариантами написания кода функции?
Если что, здесь можно постить код с форматированием, для этого есть специальная кнопочка <> когда создаешь сообщение. А то в твоем коде вообще не понятно где отступы, где без отступов.
Первая функция НЕ принимает аргументов, берет строку из пользовательского ввода, конкатенирует ее со строкой 'Hi', возвращает значение.
Вторая функция принимает строку как аргумент, конкатенирует ее с 'Hi', возвращает значение. Разница в том, что в первом случае пользовательский ввод происходит внутри функции, а во втором - до ее вызова.
Вторая функция более универсальна, так как позволяет получить name не обязательно из пользовательского ввода, а из любого места (например из файла)
Можно рассматривать первую функцию как обертку второй. Например, мы можем сделать так:
Первая функция НЕ принимает аргументов, берет строку из пользовательского ввода, конкатенирует ее со строкой 'Hi', возвращает значение.
Вторая функция принимает строку как аргумент, конкатенирует ее с 'Hi', возвращает значение. Разница в том, что в первом случае пользовательский ввод происходит внутри функции, а во втором - до ее вызова.
Вторая функция более универсальна, так как позволяет получить name не обязательно из пользовательского ввода, а из любого места (например из файла)
Можно рассматривать первую функцию как обертку второй. Например, мы можем сделать так:
def sayHI(name):
return 'Hi, '+name
def sayHi_user_input():
name = input('Введите имя: ')
return sayHI(name)
privet = sayHi_user_input()
print(privet)
В первом случае функция вводит строку с клавиатуры и добавляет перед введённой строкой "Hi ". Если вызван первый вариант функции, ты обязан ввести строку - и никак иначе.
Во втором случае ты добавляешь "Hi " к строке, переданной в качестве параметра. Эта строка никак не привязана к клавиатурному вводу. Она может быть вписана в код, быть результатом ранее сделанных вычислений и т.д. Ты явно разделяешь получение строки (отдельный input вне функции) и генерацию новой строки, производимую функцией.
Второй вариант идеологически более правильный: не надо объединять совершенно разные действия в одну сущность.
Во втором случае ты добавляешь "Hi " к строке, переданной в качестве параметра. Эта строка никак не привязана к клавиатурному вводу. Она может быть вписана в код, быть результатом ранее сделанных вычислений и т.д. Ты явно разделяешь получение строки (отдельный input вне функции) и генерацию новой строки, производимую функцией.
Второй вариант идеологически более правильный: не надо объединять совершенно разные действия в одну сущность.
Вторая функция пример как делать не надо. Код после третьей строчки не выполняется совсем, так как return возвращает значение, 'Hi <variable>', где variable будет самое первое переданное значение, строка где повторно надо спросить имя не запустится вообще, так как до нее не дойдет очередь
1 будет быстрее
Похожие вопросы
- Написание кода на питоне
- Массивы Python. Помощь в написании кода
- Почему не стоит использовать eval в написании кода?
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Помогите чайнику в Питоне. Как правильно перейти на другую строку в коде, чтоб он не запустился раньше времени?
- арументы (изменяемых объектов) функций в 1с и Python
- Проблема с кодом в Python
- С++ написать код для техникума.
- Как научится хорошо писать код?
- Кто поможет сократить код на tkinter