#python #function #variables
#python #функция #переменные
Вопрос:
Я пытаюсь преобразовать программу на Python в функцию. Я не совсем понимаю, что я делаю неправильно. Я посмотрел, как писать функции, но это не щелкает. Что мне трудно понять, так это:
- можно ли любой код python превратить в функцию, просто добавив оператор функции, вызов и аргументы или есть что-то еще?
- Когда следует использовать аргумент, а не просто вызывать функцию
- Объявление переменных в функции, возьмите мой приведенный ниже код в качестве примера. где должен быть объявлен number_list в функции по сравнению с тем, где я объявляю его в нефункциональном коде?
Вот не функция, которая работает нормально:
import random##importing random module
number_list = []
total = 0 ##starts as 0 and increases with generated random number
for i in range(5):###running a loop- set to five for 5 list items
random_num = random.randint(1, 100)##using randint() to return an integer number selected element from the specified range in this case 1-100
total = total random_num##setting value for total with random number
number_list.append(random_num)##adds to the end of the list
print('The numbers generated were:' , end=",")
for i in range(5): ##number of list items
print(number_list[i], end=",")
print('The largest number is: ', max(number_list))##Using max() method to print largest element of the list
print('The sum of the numbers is: ', total)
И функция, которую я сделал до сих пор, которая выдает ошибку, переменная number_list / total / random не объявлена:
number_list = []
total = 0
random = 0
def randomsum(number_list,total):
number_list = []
total = 0 ##starts as 0 and increases with generated random number
for i in range(5):###running a loop- set to five for 5 list items
random_num = random.randint(1, 100)##using randint() to return an integer number selected element from the specified range in this case 1-100
total = total random_num##setting value for total with random number
number_list.append(random_num)##adds to the end of the list
print('The numbers generated were:' , end=",")
for i in range(5): ##number of list items
print(number_list[i], end=",")
randomsum(number_list,total)
print('The largest number is: ', max(number_list))##Using max() method to print largest element of the list
print('The sum of the numbers is: ', total)
Также есть ли какие-нибудь хорошие видеоролики на Youtube об этом? Я просмотрел, но не нашел нужных видео.
Комментарии:
1. Начните смотреть книги и документацию, а не видео 🙂 . Для начала изучите локальные переменные и параметры функций.
2. Да, любой код может быть помещен внутрь функции, если вы передаете в качестве параметров любые дополнительные данные, которые вам нужны «извне» и которые вы хотите использовать для изменения поведения вычислений, и объявляете в качестве локальных переменных вещи, которые являются внутренними, специфичными для функции (например, список, который вы собираетесь вернуть, или общий счетчик)
3. Приятно знать, спасибо. Я думаю, что видео хороши для меня, потому что я визуальный ученик, но я понимаю, что вы говорите.
Ответ №1:
Это работает:
import random
def randomsum():
# usually it is a good idea to declare the variables locally
number_list = []
total = 0
for i in range(5):
random_num = random.randint(1, 100)
total = total random_num
number_list.append(random_num)
print('The numbers generated were:', end=",")
for i in range(5):
print(number_list[i], end=",")
#and then return them so that they can be retrieved by the function caller
return total, number_list
total, number_list = randomsum()
#this way makes for a bit cleaner code than using global variables.
print('The largest number is: ', max(number_list))
print('The sum of the numbers is: ', total)
Однако я должен согласиться с @Oscar, что вам следует внимательно изучить основы :-).
Что касается ваших вопросов:
- ДА. И нет. Да, можно преобразовать любой код python в функцию (как и в любом разумном языке программирования). Однако это не всегда просто из-за параметров, поиска возвращаемых значений и определения области видимости.
- Параметры и возвращаемые значения обычно являются предпочтительным способом в отличие от глобальных переменных.
- Для тех, которые будут широко использоваться, это место обычно находится сразу после объявления функции. Однако в python нет строгих правил, и вы можете объявлять переменные где угодно. Однако будьте осторожны, здесь будут драконы.
Комментарии:
1. Я не понимал, что вы могли бы сделать
total, number_list = randomsum()
, если бы у вас были аргументы в функции, такие как def randomsum(total, number_list): ?2. Это совершенно другой вариант использования — вы будете передавать параметры функции. Number_list — это массив, который будет передан в качестве ссылки, в то время как общее число передается по значению. Начинается веселье