Как я мог превратить этот код Python в функцию? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть этот код, который я хочу превратить в функцию. Мне нужно, чтобы function_text был доступен за пределами функции.

   function_text = TextClip(item_1, fontsize=main_text_size, font=main_font, color=corner_text_color, size=(w, text_size_60))
   function_text = function_text.set_fps(fps)
   function_text = function_text.set_duration(5)
   function_text = function_text.margin(left=0, right=1300, top=950, opacity=0)
   function_text = function_text.set_position(("center"))

Я хочу иметь возможность вводить имя переменной (function_text) и атрибут поля со значениями для этой переменной (4-я строка в коде)

Вот где я сейчас нахожусь:

def displayText(my_str):
   global my_str
   my_str = TextClip(item_1, fontsize=main_text_size, font=main_font, color=corner_text_color, size=(w, text_size_60))
   my_str = my_str.set_fps(fps)
   my_str = my_str.set_duration(5)
   my_str = my_str.margin(left=0, right=1300, top=950, opacity=0)
   my_str = my_str.set_position(("center"))
   return
displayText("function_text")

Проблема, которую я получаю, заключается в том, что я не могу установить свой параметр как глобальный, потому что получаю эту ошибку:

SyntaxError: name 'my_str' is parameter and global

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Старайтесь (никогда) не использовать глобальные переменные. Ошибка возникает из-за того, что вы установили одно и то же имя для своей глобальной переменной и для имени вашего параметра, оба являются 'my_str'.

def displayText ( my_str ):

И затем внутри функции, где my_str уже существует, потому что он был передан как параметр, вы снова определяете my_str , это неправильно, поскольку оно уже было определено ранее.

просто удалите

global my_str

и добавьте:

return my_str

в конец функции

0 голосов
/ 11 июля 2020

Вы пытаетесь использовать my_str как глобальную переменную и как параметр. Вы можете использовать его только одним способом. Из вашего кода похоже, что вам на самом деле не нужно читать my_str (в первой строке функции вы присваиваете ему новое значение), поэтому его должно быть достаточно:

def displayText():
   my_str = TextClip(item_1, fontsize=main_text_size, font=main_font, color=corner_text_color, size=(w, text_size_60))
   my_str = my_str.set_fps(fps)
   my_str = my_str.set_duration(5)
   my_str = my_str.margin(left=0, right=1300, top=950, opacity=0)
   my_str = my_str.set_position(("center"))
   return my_str
function_text = displayText()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...