Python SAX - извлечение кода xml [дубликат]

Давайте сначала поймем, что такое позиционные аргументы и аргументы ключевых слов. Ниже приведен пример определения функции с помощью аргументов Positional.

def test(a,b,c):
     print(a)
     print(b)
     print(c)

test(1,2,3)
#output:
1
2
3

Итак, это определение функции с позиционными аргументами. Вы также можете вызвать его с помощью ключевых слов / названных аргументов:

def test(a,b,c):
     print(a)
     print(b)
     print(c)

test(a=1,b=2,c=3)
#output:
1
2
3

Теперь давайте рассмотрим пример определения функции с аргументами ключевого слова:

def test(a=0,b=0,c=0):
     print(a)
     print(b)
     print(c)
     print('-------------------------')

test(a=1,b=2,c=3)
#output :
1
2
3
-------------------------

Вы можете вызвать эту функцию с позиционными аргументами:

def test(a=0,b=0,c=0):
    print(a)
    print(b)
    print(c)
    print('-------------------------')

test(1,2,3)
# output :
1
2
3
---------------------------------

Итак, теперь мы знаем определения функций с позиционными и ключевыми аргументами.

Теперь давайте изучим оператор '*' и '** '.

Обратите внимание, что эти операторы могут использоваться в двух областях:

a) вызов функции

b) определение функции

Использование оператора «*» и оператора «**» в вызове функции.

Обратимся к примеру, а затем обсудим его.

def sum(a,b):  #receive args from function calls as sum(1,2) or sum(a=1,b=2)
    print(a+b)

my_tuple = (1,2)
my_list = [1,2]
my_dict = {'a':1,'b':2}

# Let us unpack data structure of list or tuple or dict into arguments with help of '*' operator
sum(*my_tuple)   # becomes same as sum(1,2) after unpacking my_tuple with '*'
sum(*my_list)    # becomes same as sum(1,2) after unpacking my_list with  '*'
sum(**my_dict)   # becomes same as sum(a=1,b=2) after unpacking by '**' 

# output is 3 in all three calls to sum function.

Итак, помните

, когда оператор '*' или '**' используемый в вызове функции -

'*', распаковывает структуру данных, такую ​​как список или кортеж, в аргументы, необходимые для определения функции.

Оператор `** 'распаковывает словарь в аргументы необходимых для определения функции.

Теперь давайте изучим использование оператора «*» в определении функции. Пример:

def sum(*args): #pack the received positional args into data structure of tuple. after applying '*' - def sum((1,2,3,4))
    sum = 0
    for a in args:
        sum+=a
    print(sum)

sum(1,2,3,4)  #positional args sent to function sum
#output:
10

В определении функции оператор «*» упаковывает полученные аргументы в кортеж.

Теперь давайте посмотрим пример «**», используемый в определении функции :

def sum(**args): #pack keyword args into datastructure of dict after applying '**' - def sum({a:1,b:2,c:3,d:4})
    sum=0
    for k,v in args.items():
        sum+=v
    print(sum)

sum(a=1,b=2,c=3,d=4) #positional args sent to function sum

В определении функции Оператор '**' упаковывает полученные аргументы в словарь.

Итак, помните:

В вызове функции '*' распаковывает структуру данных кортежа или списка в позиционные или ключевые аргументы, которые должны быть получены определением функции.

В вызове функции '**' распаковывает структуру данных словаря в позиционные или ключевые аргументы полученное определением функции.

В определении функции «*» помещает позиционные аргументы в кортеж.

В определении функции «**» упаковывает аргументы ключевого слова в словарь.

7
задан ablimit 14 February 2010 в 21:11
поделиться

1 ответ

Текст в теге фрагментируется процессором SAX. characters может быть вызван несколько раз.

Вам нужно сделать что-то вроде:

def startElement(self, name, attrs):
    self.map[name] = ''
    self.tag = name

def characters(self, content):
    self.map[self.tag] += content

def endElement(self, name):
    print self.map[name]
8
ответ дан codeape 28 August 2018 в 15:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: