Форум сайта python.su
0
Здравствуйте!
Первый мой вопрос на форуме. так что прошу не серчать если что не так 
Итак на leetcode решал задачки про однонаправленные списки.
существует класс
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None
global b1 b1=ListNode(666) class Solution: def reverseList(self, head: ListNode) -> ListNode: def util(head,h1): b1.val=head.val # присваиваю "глобальному" обьекту в поле val, функция возвращает 1 util(head,head) return b1
global b1 b1=ListNode(666) class Solution: def reverseList(self, head: ListNode) -> ListNode: def util(head,h1): b1=head # присваиваю как обьект к обьекту- возвращает 666, то есть присваивания не происходит util(head,head) return b1
Отредактировано Alectaiactaest (Июнь 30, 2019 19:38:30)
Офлайн
568
Alectaiactaest
global b1 надо писать внутри той функции в которой вы используете глобальную переменную, чтобы функция не создавала локальную переменную с таким же именем
Офлайн
0
и как это отвечает на мой вопрос?
хотите сказать что образаясь к признаку .val новая переменная не создается?
а в чем смысл глобальности переменной если она создается новой внутри функции всёравно
Офлайн
Alectaiactaestb1.val - обращение к полю переменной, т.е. переменная в любом случае уже должна существовать. Если такой переменной нет в методе, ищется в классе, нет в классе - за его пределами и т.д.
и как это отвечает на мой вопрос? хотите сказать что образаясь к признаку .val новая переменная не создается?а в чем смысл глобальности переменной если она создается новой внутри функции всёравно
a = 123 def global_a(): # global a a = 1000 print(a, globals().get("a")) global_a()
Отредактировано Egorro13 (Июнь 30, 2019 20:44:54)
Офлайн