Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 13, 2011 09:45:44

b1rus
От:
Зарегистрирован: 2011-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

def uname_func():

uname = "uname"
uname_arg = "-a"
print ("Gathering system information with %s command:\n") % uname
subprocess.call([uname, uname_arg])
Работает в версии 2.6. Не могу никак разобраться с выводом спецификаторов формата, а именно:
name = 2
print('name=', %s) %name
SyntaxError: invalid syntax
>>> print('name=',%s) %name
File "<stdin>", line 1
print('name=',%s) %name



Отредактировано (Окт. 13, 2011 10:04:34)

Офлайн

#2 Окт. 13, 2011 10:04:05

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

Попробуйте так: print(“Gathering system information with %s command:\n” % uname)



Отредактировано (Окт. 13, 2011 10:07:15)

Офлайн

#3 Окт. 13, 2011 10:07:26

b1rus
От:
Зарегистрирован: 2011-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

Python 3.1.2 (r312:79147, Sep 27 2010, 09:45:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> uname = "uname"
>>> uname_arg = "-a"
>>> print ("Gathering system information with %s command:\n") % uname
Gathering system information with %s command:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'



Офлайн

#4 Окт. 13, 2011 10:12:45

b1rus
От:
Зарегистрирован: 2011-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

Да, получилось. Я так полагаю что если теперь print стала функцией, то ей надо все как аргументы передавать внутри сковок???



Офлайн

#5 Окт. 13, 2011 11:12:00

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

Дело не совсем в этом, но в целом таки да.
Просто в python 2.6 ваша первая конструкция обозначает нечто типа этого:

var = ("Gathering system information with %s command:\n") % uname
print var
Смысла в этом немного, поскольку это полностью эквивалентно выражению без скобок, но оно работает.

В python3 print var не поддерживается, поскольку print перестал быть выражением.



Офлайн

#6 Окт. 13, 2011 13:11:52

b1rus
От:
Зарегистрирован: 2011-10-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите адаптировать код для версии 3.1

Понял, спасибо большое.



Офлайн

#7 Окт. 14, 2011 02:47:45

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

Помогите адаптировать код для версии 3.1

print("Gathering system information with {0} command:\n".format(uname))
в третьем питоне принято так (стилистически)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version