Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2012 15:09:10

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Функции

Помогите разобраться, уважаемые.
вот код:
def Writing_Log():
line = ser.readline() + ‘\n’
SaveFile = open( ‘Position.txt’, ‘a’ )
SaveFile.write(line)
SaveFile.close()
return line
values = line.split( “ ” )

почему выдается ошибка? … Не понимаю, как работает return, сколько ни читал - везде пишут, что значение возвращает. Возвращает откуда?



Офлайн

#2 Апрель 12, 2012 15:25:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Функции

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. Задолба!ли



Офлайн

#3 Апрель 12, 2012 15:31:14

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Функции

Смысл функции - возвращать значения (результат). Например функция складывающая два числа возвращает их сумму.

def sum(a, b):
return a + b
Функция открывающая файл, возвращает ссылку на файл. И так далее.



Офлайн

#4 Апрель 13, 2012 01:15:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Функции

sum() - встроенная функция, нельзя перекрывать



Отредактировано py.user.next (Апрель 13, 2012 01:15:38)

Офлайн

#5 Апрель 13, 2012 05:51:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Функции

py.user.next
sum() - встроенная функция, нельзя перекрывать
Да ладно!
>>> def sum(a,b):
	print 'sum=%s' %(a+b)
>>> sum(10,3)
sum=13
>>> 



Офлайн

#6 Апрель 13, 2012 06:29:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Функции

ну, а теперь примени встроенную функцию sum()
а она может понадобиться где угодно



Отредактировано py.user.next (Апрель 13, 2012 06:32:21)

Офлайн

#7 Апрель 13, 2012 07:14:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Функции

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



Офлайн

#8 Апрель 13, 2012 08:02:23

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Функции

“- Как вам моя функция?
- Горизонт завален!”

:D



Офлайн

#9 Апрель 13, 2012 09:33:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Функции

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)
>>>



Офлайн

#10 Апрель 13, 2012 09:47:19

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Функции

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)
>>>

Это и неважно совершенно. Я не ставил сейчас целью написать полноценный код, это просто рабочий пример.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version