Чтобы расширить ответ TigerhawkT3, причина, по которой операция yield возвращает None
в вашем коде, состоит в том, что list(r1)
не отправляет ничего в генератора. Попробуйте следующее:
def test1(x):
for i in x:
_ = yield i
yield _
r1 = test1([1, 2, 3])
for x in r1:
print(' x', x)
print('send', r1.send('hello!'))
Выход:
x 1
send hello!
x 2
send hello!
x 3
send hello!
Вот несколько подготовленный пример, в котором можно было бы отправлять значения в генератор:
def changeable_count(start=0):
current = start
while True:
changed_current = yield current
if changed_current:
current = changed_current
else:
current += 1
counter = changeable_count(10)
for x in range(20):
print(next(counter), end=' ')
print()
print()
print('Sending 51, printing return value:', counter.send(51))
print()
for x in range(20):
print(next(counter), end=' ')
print()
print()
print('Sending 42, NOT printing return value')
print()
counter.send(42)
for x in range(20):
print(next(counter), end=' ')
print()
Выход:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Sending 51, printing return value: 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
Sending 42, NOT printing return value
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
Как другие упомянули, у Вас есть проблема специфики. При определении, какое из двух правил должно иметь приоритет, механизм CSS считает количество #id
с в каждом селекторе. Если у Вас есть больше, чем другой, это используется. Иначе это продолжает выдерживать сравнение .class
es и tag
с таким же образом. Здесь, у Вас есть класс на правиле таблицы стилей, но не на встроенном правиле, таким образом, таблица стилей имеет приоритет.
можно переопределить это с !important
, но это - ужасно большой молоток для использования здесь. Вы - более обеспеченное улучшение специфики Вашего встроенного правила. На основе Вашего описания это походит на Ваш .rightColumn
элемент или или содержит table
, и Вы хотели бы, чтобы ячейки в той таблице имели дополнительный интервал? Если так, селектор, который Вы ищете," .rightColumn td
", который более конкретен, чем правило таблицы стилей и будет иметь приоритет.
Большинство ответов верны, когда говорят, что это проблема специфичности, но неверны или неполны в объяснении правил специфичности.
В основном в вашем случае .rightColoumn *
«более конкретен», чем td
, и поэтому правило побеждает, даже если оно наступает раньше.
Правила CSS 2.1 находятся здесь . Вот эти правила:
Конкатенация четырех чисел abcd (в системе счисления с большой базой) дает специфичность.
Таким образом, в вашем случае у вас есть два правила:
.rightColumn * {} /* a = 0, b = 0; c = 1, d = 0 : Specificity = 0010*/
td {} /* a = 0, b = 0, c = 0, d = 1 : Specificity = 0001 */
0001 ниже, чем 0010, и поэтому первое правило выигрывает.
Есть два способа исправить это:
!important
, чтобы сделать правило более «важным». Я бы избегал этого, потому что это сбивает с толку, когда у вас много правил, распределенных по нескольким файлам. Пример:
<style>
.rightColomn * { padding: 0; } /* 0010 */
td#myUnpaddedTable { padding: 10px; } /* 0101 */
td.anUnpaddedTable { padding: 10px; } /* 0011 */
</style>
Редактировать: Исправлены правила специфичности для *. Комментарий Дэвида побудил меня перечитать спецификацию, которая показывает, что селектор * ничего не влияет на оценку специфичности.
Самый легкий способ заставить это работать состоит в том, чтобы добавить"! важный" для CSS для гарантии его приоритета (если у Вас нет нескольких! важные правила):
td {
padding-left: 10px !important;
}
, Если Вы ищете ответ без! важный, необходимо читать в спецификации специфики CSS . Связанный сайт имеет хорошее объяснение того, как он работает, хотя в основном он идет от самого важного до наименьшего, с идентификационными самыми важными селекторами, вторые селекторы класса, и треть селекторов элемента.
Попробуйте вместо этого:
td.rightColumn * {margin: 0; padding: 0;}
td
во внешней таблице стилей более конкретен, поэтому он выигрывает. Если вы квалифицируете класс rightColumn
именем элемента, тогда будут применяться стили уровня страницы.
Вы могли попытаться добавить! важный флаг к Вашему встроенному css.
, например,
троланд {дополняющий-left:10px! важный;}
кроме того, для общих правил упорядочивания правила css, взглянули на это:
Сделайте это:
.rightColumn *,
td.rightColumn * {
margin: 0;
padding: 0;
}
Приоритет в CSS выглядит следующим образом:
Пример:
<style type="text/css">
#myid{
padding: 10px;
}
.class{
padding: 20px;
}
</style>
<div id="myid" class="class"></div>
Несмотря на то, что у вашего div есть и ID, и класс, правило ID переопределит правило .class.
Чтобы узнать больше о приоритетах правил CSS, я бы порекомендовал http://www.w3.org/TR/CSS2/cascade.html#specificity .
хорошо, я признаю, что я немного опаздываю к игре здесь ... но через 3 года, я думаю, я все еще могу стрелять за это первое место ответа.
дополнительный соус в моем ответе, что есть Пример css с двумя уровнями имени класса.
в приведенном ниже примере вы можете увидеть, что 'td' без класса получает стиль ".interval td", а td с классом "indragover" получает Стиль "table.interval td.indragover" ..
(этот код предназначен для перетаскивания html, поэтому есть некоторый javascript, применяющий класс «indragover» к td в событиях dragenter, dragleave)
// put this in a css file
.interval {
height: 100%;
width: 100%;
background: #FFFFCC;
border: 2px solid #000000;
border-collapse: collapse;
}
table.interval tr td {
border: 2px solid black;
color:#112ABB;
background: #FFFFCC;
height: 20px;
}
table.interval td.indragover {
background: #AAAA00;
}
// put this in a html file
<table class="interval">
<tr><td>blah</td><td class="indragover">blah</td></tr>
<tr><td class="indragover">blah</td><td>blah</td></tr>
</table>
1.div p.bio {font-size: 14px}
#sidebar p {font-size: 12px}
Первая строка CSS может показаться более специфичной на первый взгляд, но на самом деле это вторая строка выше, которая будет более специфичной для размера шрифта вашего абзаца.
id
более специфичен, чем class
, который более специфичен, чем элемент.
2.p {font-size: 12px}
p.bio {font-size: 14px}
Вторая строка CSS (p.bio
) более конкретна, чем первая, когда речь заходит о вашем абзаце class="bio"
.
уровень приоритета class
выше, чем у элемента p
.