Найти - Пользователи
Полная версия: Помогите адаптировать код для версии 3.1
Начало » Python для новичков » Помогите адаптировать код для версии 3.1
1
b1rus
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
Ed
Попробуйте так: print(“Gathering system information with %s command:\n” % uname)
b1rus
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'
b1rus
Да, получилось. Я так полагаю что если теперь print стала функцией, то ей надо все как аргументы передавать внутри сковок???
Ed
Дело не совсем в этом, но в целом таки да.
Просто в python 2.6 ваша первая конструкция обозначает нечто типа этого:
var = ("Gathering system information with %s command:\n") % uname
print var
Смысла в этом немного, поскольку это полностью эквивалентно выражению без скобок, но оно работает.

В python3 print var не поддерживается, поскольку print перестал быть выражением.
b1rus
Понял, спасибо большое.
py.user.next
print("Gathering system information with {0} command:\n".format(uname))
в третьем питоне принято так (стилистически)
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