День рождения не появляется на frm_Load

Неглубокая копия создает новый составной объект и вставляет его ссылки в исходный объект.

В отличие от мелкой копии, deepcopy создает новый составной объект, а также вставляет копии исходных объектов исходного составного объекта .

Давайте возьмем пример.

import copy
x =[1,[2]]
y=copy.copy(x)
z= copy.deepcopy(x)
print(y is z)

Выше кода печатает FALSE.

Посмотрим, как.

Оригинальный составной объект x=[1,[2]] (называемый соединением, поскольку он имеет объект внутри объекта (начало))

, как вы можете видеть на изображении, есть список внутри list.

Затем мы создаем мелкую копию с помощью y = copy.copy(x). Что здесь делает python, он создаст новый составной объект, но объекты внутри них будут указывать на объекты orignal.

На изображении у него есть создала новую копию для внешнего списка. но внутренний список остается таким же, как и исходный.

Теперь мы создаем его глубокую копию, используя z = copy.deepcopy(x). то, что здесь делает python, он создаст новый объект для внешнего списка, а также для внутреннего списка. как показано на изображении ниже (красный выделен).

В конце кода печатается False, так как y и z не являются одними и теми же объектами.

HTH.

1
задан mm8 5 March 2019 в 16:03
поделиться

2 ответа

Если вы добавите 0 дней, ваше «если» будет выглядеть так:

if(bday>now && bday<now)

это «если» всегда будет ложным.

Первое выражение дисквалифицирует второе.

0
ответ дан MidnightCommander 5 March 2019 в 16:03
поделиться
  1. bday > DateTime.Now ложно, поскольку DateTime.Now включает время дня, тогда как bday - нет.
  2. «05-03-2019» анализируется как 3 мая, а не 5 марта.

Попробуйте это:

DateTime bday = Convert.ToDateTime("03-05-2019");

int years = DateTime.Now.Year - bday.Year;
bday = bday.AddYears(years);
DateTime check = DateTime.Now.AddDays(0);
if ((bday >= DateTime.Now.Date) && (bday<check))
{
    lblFødselsdag.Text = ("You have birthday");
}
else
{
    lblFødselsdag.Text = ("No birthday");
}

Или просто сравните год и месяц в соответствии с предложением @bassfader:

if (DateTime.Now.Day == bday.Day && DateTime.Now.Month == bday.Month) { ... }
0
ответ дан mm8 5 March 2019 в 16:03
поделиться
Другие вопросы по тегам:

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