Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
import string a = "a b c"
Содержание книги
- quot;""Занесение нового элемента в контейнер и оповещение потоков"""
- Следующий пример иллюстрирует параллельность выполнения потоков,используя возможности библиотеки графических примитивов Tkinter(она входит в стандартную
- quot;""Выход из программы"""
- Параллельное программирование требует тщательной отработки взаимодействия между потоками управления.Некоторые участки кода необходимо ограждать от одновременного
- В лекции будет рассматриваться пакетtkinter,который по сути является оберткой дляtcl/tk - известного графического пакета для сценарного языка tcl. На примере этого
- Вхождение курсора в пределы виджета
- Focusin. Получение фокуса окном. Focusout. Keypress. Нажатие клавиши на клавиатуре. Keyrelease. Отжатие клавиши на клавиатуре. Выход курсора за пределы виджета. Motion. Движение мыши в пределах виджета. Mousewheel. Прокрутка колесика мыши. Reparent. Измен
- tk = Tk() # основное окно приложения
- Создание и конфигурирование виджета
- from Tkinter import * tk = Tk()
- При желании можно задать стилевые опции для всех виджетов сразу:с помощью метода tk_setpalette(). Помимо использованных выше свойств в этом методе можно
- from Tkinter import * import urllib
- from Tkinter import * tk = Tk()
- b[1, 3].pack(side=BOTTOM, fill=Y) b[1, 4].pack(side=BOTTOM, fill=BOTH)
- import Tkinter, Image, ImageTk
- start=0, extent=150, fill="blue")
- c.itemconfigure(CURRENT, fill=choice(colors))
- c = Canvas(tk, height=300, bg="white")
- Виджеты располагаются внутри другого виджета(например,рамки)в соответствии с набором правил.Этот набор правил реализуют менеджеры расположения,которых в
- Лекция#13:ИнтеграцияPythonс другими языками
- Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и
- include "Python.h" #include "md5.h"
- number of bits, modulo 2^64 (lsb
- return PyString_FromStringAndSize((char *)aDigest, 16);
- MD5_new(PyObject *self, PyObject *args)
- Пример встраивания интерпретатора в программу на C
- Здесь же следует сделать Еще одно замечание:программа,встраивающаяpython,не должна много раз выполнять py_initialize() и py_finalize(),так как это может
- File : freq.i */ %module freq. typemap(out) int * { int i;. result = PyTuple_New(256); for(i=0; i<256; i++). PyTuple_SetItem($result, i, PyLong_FromLong($1[i])); free($1);. extern int * frequency(char s[]);. swig -python freq.i. I/usr/local/lib/python2
- PyLong_FromLong(result[i])); free(result);
- X, Y = self.getSize().width, self.getSize().height label.setText("%s x %s" % (X, Y))
- panel.add(button, "South") lines = Lines() panel.add(lines, 'Center')
- print " yes:", query
- let foo_bar_print = pywrap_closure
- import StringIO, token, tokenize
- prog_example = """
- import pprint, token, parser, symbol
- Здесь необходимо заметить,что недавно вPythonпоявился пакет compiler,который
- Отладка. lst.append(ord(i)) return lst. gt; lst = [] (Pdb) n. gt; /examples/myfun.py(6)fun() -> lst.append(ord(i)). usr/bin/python. File myfun.py. gt; lst.append(ord(i)). Pdb) p vars(). i': 'A', 's': 'ABCDE', 'lst': []} (Pdb) n. Pdb) p vars(). i':
- print "\n".join(difflib.get_close_matches(word + "\n", open("russian.txt")))
- profile:0(print_close_matches("профайлер"))
- t = Timer(""" res = ""
- Следует учитывать,что программа,реализующая некоторый алгоритм,не может быть оптимизирована до бесконечно малого времени вычисления:используемый алгоритм имеет
- from string import split a = "x y z"
- import string a = "a b c"
- gt;>> issubclass(str, basestring) True
- inspect.getmoduleinfo('/usr/local/lib/python2.3/inspect.pyc') ('inspect', '.pyc', 'rb', 2)
- gt;>> inspect.getsourcefile(inspect)
- x1', 'y1'], ['x2', 'y2']], None, None, None)
- f_back : <frame object at 0x812383c>
- Одно из наиболее частых применений модуля traceback- "мягкая"обработка исключений
import string a = "a b c"
def test(x, y): a1 = "x y z"
print string.split(a1) + x
test(['d'], 'e')
Теперь имеется лишь одно предупреждение:
goodcode.py:4: Parameter (y) not used
Такое тоже бывает.Программист должен лишь убедиться,что он не сделал ошибки.
Исследование объекта
Даже самые примитивные объекты в языке программированияPythonимеют возможности,общие для всех объектов:можно получить их уникальный идентификатор(с помощью функции id()),представление в виде строки-даже в двух вариантах(функции str() и
repr());можно узнать атрибуты объекта с помощью встроенной функции dir() и во многих случаях пользоваться атрибутом __dict__ для доступа к словарю имен объекта.
Также можно узнать,сколько других объектов ссылается на данный с помощью функции sys.getrefcount().Есть еще сборка мусора,которая применяется для освобождения
памяти от объектов,которые более не используются,но имеют ссылки друг на друга(циклические ссылки). Сборкой мусора (garbage collection) можно управлять из модуля gc.
Все это подчеркивает тот факт,что объекты вPythonсуществуют не сами по себе,а являются частью системы:они и их отношения строго учитываются интерпретатором.
Сразу же следует оговориться,чтоPythonимеет две стороны интроспекции:"официальную", которую поддерживает описание языка и многие его реализации, и
"неофициальную", которая использует особенности той или иной реализации. С помощью "официальных" средств интроспекции можно получить информацию о принадлежности объекта тому или иному классу(функция type()),проверить принадлежность экземпляра классу(isinstance()),отношение наследования между классами(issubclass()),а также получить информацию,о которой говорилось чуть выше.Это как бы приборная доска машины.С помощью"неофициальной"интроспекции(это то,что под капотом)можно получить доступ к чему угодно:к текущему фрейму исполнения и стеку,к байт-коду функции,к некоторым механизмам интерпретатора(от загрузки модулей до полного контроля над внутренней средой исполнения).Сразу же стоит сказать,что этот механизм следует рассматривать(и тем более вносить изменения)очень деликатно:разработчики языка не гарантируют постоянство этих механизмов от версии к версии,а некоторые полезные модули используют эти механизмы для своих целей.Например,упомянутый ранее ускоритель выполненияPython-кода psyco очень серьезно вмешивается во фреймы исполнения,заменяя их своими объектами.Кроме того,разные реализацииPythonмогут иметь совсем другие внутренние механизмы.
Сказанное стоит подкрепить примерами.
В первом примере исследуется объект с помощью"официальных"средств.В качестве объекта выбрана обычная строка:
>>> s = "abcd"
>>> dir(s)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__',
'__len__',
'__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode',
'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum',
'isalpha',
'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join',
'ljust',
'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> id(s)
>>> print str(s) abcd
>>> print repr(s) 'abcd'
>>> type(s) <type 'str'>
>>> isinstance(s, basestring) True
>>> isinstance(s, int)
|