Найти - Пользователи
Полная версия: Функции
Начало » Python для новичков » Функции
1 2
Queeee
Помогите разобраться, уважаемые.
вот код:
def Writing_Log():
line = ser.readline() + ‘\n’
SaveFile = open( ‘Position.txt’, ‘a’ )
SaveFile.write(line)
SaveFile.close()
return line
values = line.split( “ ” )

почему выдается ошибка? … Не понимаю, как работает return, сколько ни читал - везде пишут, что значение возвращает. Возвращает откуда?
FishHook
Queeee
Помогите разобраться, уважаемые.
вот код:
def Writing_Log():
line = ser.readline() + ‘\n’
SaveFile = open( ‘Position.txt’, ‘a’ )
SaveFile.write(line)
SaveFile.close()
return line
values = line.split( “ ” )

почему выдается ошибка? … Не понимаю, как работает return, сколько ни читал - везде пишут, что значение возвращает. Возвращает откуда?
Уважаемый, ну нельзя же быть таким твердотелым.
1. Код - в теги.
2. Трэйсбек в студию.
3. Задолба!ли
Soteric
Смысл функции - возвращать значения (результат). Например функция складывающая два числа возвращает их сумму.
def sum(a, b):
return a + b
Функция открывающая файл, возвращает ссылку на файл. И так далее.
py.user.next
sum() - встроенная функция, нельзя перекрывать
FishHook
py.user.next
sum() - встроенная функция, нельзя перекрывать
Да ладно!
>>> def sum(a,b):
	print 'sum=%s' %(a+b)
>>> sum(10,3)
sum=13
>>> 
py.user.next
ну, а теперь примени встроенную функцию sum()
а она может понадобиться где угодно
FishHook
py.user.next
ну, а теперь примени встроенную функцию sum()
а она может понадобиться где угодно
Это уже другой вопрос. Синтаксис Питона позволяет переопределить стандартную функцию. Что с ней делать - проблеммы программиста, т.е “можно-нельзя” в данном случае проблема качества кода, а не принципа. С другой стороны, если ты переопределишь ту же sum, расширив ее функционал, что в этом плохого?
Как то так, например
import collections
def_sum=sum
def sum(i):
    if isinstance(i, collections.Iterable):
       return def_sum(i)
    else:
       return i
print sum([1,2,3])
print sum(9)
>>>6
>>>9

#Native sum
print sum([1,2,3])
print sum(9)
Traceback (most recent call last):
  File "tr.py", line 3, in <module>
    print sum(9)
TypeError: 'int' object is not iterable
Soteric
“- Как вам моя функция?
- Горизонт завален!”

:D
py.user.next
FishHook
С другой стороны, если ты переопределишь ту же sum, расширив ее функционал, что в этом плохого?
туда могут попасть неправильные данные, и она вернёт неправильный ответ
а встроенная выпадет с исключением

>> import collections
>>> def_sum=sum
>>> def sum(i):
...     if isinstance(i, collections.Iterable):
...        return def_sum(i)
...     else:
...        return i
... 
>>> print sum(None)
None
>>>

у тебя ошибка в определении функции sum()

встроенная версия
>>> sum([[1], [2], [3]], [])
[1, 2, 3]
>>>

твоя версия
>>> sum([[1], [2], [3]], [])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() takes exactly 1 argument (2 given)
>>>
FishHook
py.user.next
у тебя ошибка в определении функции sum()

встроенная версия
>>> sum([[1], [2], [3]], [])
[1, 2, 3]
>>>

твоя версия
>>> sum([[1], [2], [3]], [])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() takes exactly 1 argument (2 given)
>>>

Это и неважно совершенно. Я не ставил сейчас целью написать полноценный код, это просто рабочий пример.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB