반응형
반응형

진주의 의미는
'눈물'이라고 한다. 진주알이
또르르 구르는 눈물방울처럼 영롱하니
누가 그리 갖다가 붙여놓았나? 진주를 닮은
순백의 눈물이라면 날마다 흘린다해도 무슨
큰 탈이 나겠는가. 조심조심 살얼음 위를 디뎌도
때가 묻는 세상인데. 영혼의 정화를 위해서라면
이따금 눈물을 펑펑 쏟은들 해롭지 않은
일인 것이다.


- 안윤자의 《사대문 밖 마을》 중에서 -  


* 진주는
상처와 눈물의 결정체입니다.
조개 속 여린 속살에 이물질이 파고 들어와
고통스러울 때 그 아픔을 감내하면서 진주질을 분비,
이물질을 감싸서 만들어진 것이 진주입니다. 그야말로
조개의 눈물입니다. 그 눈물이 너무도 아름답고 영롱해서
예로부터 왕족, 귀족들만 사용할 수 있었습니다.
'감추어진 영혼'이라고 불렸던 진주처럼,
지금 나에게 어떤 이물질로 들어와
아픔을 주고 있는지 조용히
살필 일입니다.

반응형

'생활의 발견 > 아침편지' 카테고리의 다른 글

항노화의 모범 답안  (0) 2024.07.10
모래 한 알에서 세상을 보라!  (0) 2024.07.09
위험  (0) 2024.07.08
무엇이 우리 학생들을 멍들게 하는가  (0) 2024.07.05
해우소(解憂所)  (0) 2024.07.04
반응형

위험

 

어둑어둑해진 산길

반응형

'생활의 발견 > 아침편지' 카테고리의 다른 글

모래 한 알에서 세상을 보라!  (0) 2024.07.09
조개의 눈물  (0) 2024.07.08
무엇이 우리 학생들을 멍들게 하는가  (0) 2024.07.05
해우소(解憂所)  (0) 2024.07.04
아이는 어른의 거울이다  (0) 2024.07.03
반응형

우리나라 학생들처럼
불행한 학생은 없습니다. 이것은
이미 국제적으로 공인되었습니다.
극단적 경쟁 교육이 아이들을 죽이고 있습니다.
한국에서 '살인적인 경쟁 교육'이라는 말은 결코
수사가 아닙니다. 청소년 자살률은 OECD 평균을
훨씬 상회하는 수준이고, 청소년 사망원인 1위도
자살입니다. 그러니 청소년의 행복도 또한 세계에서
바닥입니다. 가장 예민한 감수성과 왕성한 지적
호기심을 가지고 세상과 만나야 할 아이들이
한국에서는 그 세상을 전쟁터로 체험한다는
것은 너무도 참혹한 일입니다.


- 김누리의 《경쟁 교육은 야만이다》 중에서 -


* 교육에는
필연적으로 경쟁이 뒤따릅니다.
학생 사이에 우열이 가려지고 순위가 매겨집니다.
경쟁에서 이긴 학생은 영광을 누리지만 밀린 학생은
좌절감에 때론 극단의 선택을 하게 됩니다. 문제는
경쟁 자체가 아닙니다. 가치 없는 경쟁, 저속한
목표의 경쟁, 경쟁을 위한 경쟁, 이런 류의
경쟁은 우리 아이들의 정신과 영혼을
멍들게 합니다. 어떠한 상황에서도
용기를 잃지 않게 하는 경쟁이
진정한 교육입니다.

반응형

'생활의 발견 > 아침편지' 카테고리의 다른 글

조개의 눈물  (0) 2024.07.08
위험  (0) 2024.07.08
해우소(解憂所)  (0) 2024.07.04
아이는 어른의 거울이다  (0) 2024.07.03
병을 다시 얻는 이유  (0) 2024.07.02
반응형

[workout] Justice Served Workout.  

https://darebee.com/workouts/justice-served-workout.html

 

Justice: Served Workout

 

darebee.com

 

반응형
반응형

"""_summary_
얕은 복사(shallow copy)
    list의 슬라이싱을 통한 새로운 값을 할당해봅니다.
    아래의 결과와 같이 슬라이싱을 통해서 값을 할당하면 새로운 id가 부여되며, 서로 영향을 받지 않습니다
"""

print("\n","*" * 30, "\n   얕은 복사(shallow copy) \n","*" * 30) 

a = [1, 2, 3]
b = a[:]
print(" a = ", a)
print(" b = ", b)

print(" id(a) : ", id(a)) #다른 주소
print(" id(b) : ", id(b))

print(" a == b : ", a == b)
print(" a is b : ", a is b)

b[0] = 5

print(a)
print(b)

""" 
    하지만, 이러한 슬라이싱 또한 얕은 복사에 해당합니다.
    리스트안에 리스트 mutable객체 안에 mutable객체인 경우 문제가 됩니다.
    id(a) 값과 id(b) 값은 다르게 되었지만, 그 내부의 객체 id(a[0])과 id(b[0])은 같은 주소를 바라보고 있습니다
"""
a = [[1,2],[3,4]]
b = a[:]
print(" id(a) : ", id(a)) #다른 주소
print(" id(b) : ", id(b))

print(" id(a[0]) : ",id(a[0])) #같은 주소
print(" id(b[0]) : ",id(b[0]))


"""깊은 복사(deep copy)
    깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것입니다.
    copy.deepcopy메소드가 해결해줍니다
"""
print("\n","*" * 30, "\n   deepcopy \n","*" * 30)  

import copy

a = [[1,2],[3,4]]
b = copy.deepcopy(a)
a[1].append(5)

print(" a : ", a)
print(" b : ", b)

print(" id(a) : ", id(a)) #다른 주소
print(" id(b) : ", id(b))

 

반응형
반응형

[python] 얕은 복사(shallow copy)와 깊은 복사(deep copy)

 

https://wikidocs.net/16038

 

12. 얕은 복사(shallow copy)와 깊은 복사(deep copy)

## 1. mutable과 immutable 객체 객체에는 mutable과 immutable 객체가 있습니다. ❈ 객체 구분 표 class 설명 구분 l…

wikidocs.net

 

1. mutable과 immutable 객체

객체에는 mutable과 immutable 객체가 있습니다.

❈ 객체 구분 표

class설명구분

list mutable 한 순서가 있는 객체 집합 mutable
set mutable 한 순서가 없는 고유한 객체 집합 mutable
dict key와 value가 맵핑된 객체, 순서 없음 mutable
bool 참,거짓 immutable
int 정수 immutable
float 실수 immutable
tuple immutable 한 순서가 있는 객체 집합 immutable
str 문자열 immutable
frozenset immutable한 set immutable

일반 user가 작성한 class도 대부분 mutable 한 객체 입니다.
immutable한 클래를 만들기 위해서는 특별한 방법이 필요합니다.

https://stackoverflow.com/questions/4828080/how-to-make-an-immutable-object-in-python

  • REPL에서 mutable과 immutable에서 구분해봅시다. 몇가지만 해봅니다.
  • list 는 mutable 입니다.
  • 변수 a 에 1, 2, 3을 원소로 가지는 리스트를 할당하였습니다.
  • id는 변수의 메모리 주소값을 리턴해줍니다.
  • a의 첫번째 원소를 변경한 후에도 id값은 변경없이 a의 변수가 변경되었습니다.
>>> a = [1, 2, 3]
>>> id(a)
4393788808
>>> a[0] = 5
>>> a
[5, 2, 3]
>>> id(a)
4393788808
  • set도 mutable입니다.
  • |= set에서 or 연산입니다. 합집합이 됩니다.
  • 값은 변경되었으나 id는 변함없습니다.
>>> x = {1, 2, 3}
>>> x
{1, 2, 3}
>>> id(x)
4396095304
>>> x|={4,5,6}
>>> x
{1, 2, 3, 4, 5, 6}
>>> id(x)
4396095304
  • str은 immutable 입니다.
  • s 변수에 첫번째 글자를 변경 시도하면 에러가 발생합니다.
  • s에 다른 값을 할당하면, id가 변경됩니다. 재할당은 애초에 변수를 다시할당하는 것이므로 mutable과 immutable과는 다른 문제입니다. list또한 값을 재할당하면 id가 변경됩니다.
>>> s= "abc"
>>> s
'abc'
>>> id(s)
4387454680
>>> s[0]
'a'
>>> s[0] = 's'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> s = 'def'
>>> s
'def'
>>> id(s)
4388970768

2. 변수 간 대입

2-1 mutable한 객체의 변수 간 대입

  • list의 얕은 복사를 확인 해봅니다.
  • b 에 a를 할당하면 값이 할당되는 것이 아니라 같은 메모리 주소를 바라봅니다.
  • b를 변경하면 같이 a도 바뀝니다.
  • mutable한 다른 객체 또한 똑같은 현상이 나타납니다.
>>> a = [1, 2, 3]
>>> b = a # shallow copy
>>> b[0]= 5
>>> a
[5, 2, 3]
>>> b
[5, 2, 3]
>>> id(a)
4396179528
>>> id(b)
4396179528

2-2 immutable한 객체의 변수간 대입

  • str 문자열의 얕은 복사를 확인해봅니다.
  • list와 똑같이 b를 a에 할당하면 같은 메모리 주소를 바라보게 됩니다.
  • 하지만 b에 다른 값을 할당하면 재할당이 이루어지며 메모리 주소가 변경됩니다.
  • 고로 a와 b는 다른 값을 가집니다.
>>> a = "abc"
>>> b = a
>>> a
'abc'
>>> b
'abc'
>>> id(a)
4387454680
>>> id(b)
4387454680
>>> b = "abcd"
>>> a
'abc'
>>> b
'abcd'
>>> id(a)
4387454680
>>> id(b)
4396456400

3. 얕은 복사(shallow copy)

  • list의 슬라이싱을 통한 새로운 값을 할당해봅니다.
  • 아래의 결과와 같이 슬라이싱을 통해서 값을 할당하면 새로운 id가 부여되며, 서로 영향을 받지 않습니다.
>>> a = [1,2,3]
>>> b = a[:]
>>> id(a)
4396179528
>>> id(b)
4393788808
>>> a == b
True
>>> a is b
False
>>> b[0] = 5
>>> a
[1, 2, 3]
>>> b
[5, 2, 3]
  • 하지만, 이러한 슬라이싱 또한 얕은 복사에 해당합니다.
  • 리스트안에 리스트 mutable객체 안에 mutable객체인 경우 문제가 됩니다.
  • id(a) 값과 id(b) 값은 다르게 되었지만, 그 내부의 객체 id(a[0])과 id(b[0])은 같은 주소를 바라보고 있습니다.
>>> a = [[1,2], [3,4]]
>>> b = a[:]
>>> id(a)
4395624328
>>> id(b)
4396179592
>>> id(a[0])
4396116040
>>> id(b[0])
4396116040
  • 재할당하는 경우는 문제가 없습니다. 메모리 주소도 변경되었습니다.
>>> a[0] = [8,9]
>>> a
[[8, 9], [3, 4]]
>>> b
[[1, 2], [3, 4]]
>>> id(a[0])
4393788808
>>> id(b[0])
4396116040
  • 하지만, a[1] 에 값을 변경하면 b[1]도 따라 변경됩니다.
>>> a[1].append(5)
>>> a
[[8, 9], [3, 4, 5]]
>>> b
[[1, 2], [3, 4, 5]]
>>> id(a[1])
4396389896
>>> id(b[1])
4396389896
  • copy 모듈의 copy 메소드 또한 얕은 복사입니다.
>>> import copy
>>> a = [[1,2],[3,4]]
>>> b = copy.copy(a)
>>> a[1].append(5)
>>> a
[[1, 2], [3, 4, 5]]
>>> b
[[1, 2], [3, 4, 5]]

4. 깊은 복사(deep copy)

  • 깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것입니다.
  • copy.deepcopy메소드가 해결해줍니다.
>>> import copy
>>> a = [[1,2],[3,4]]
>>> b = copy.deepcopy(a)
>>> a[1].append(5)
>>> a
[[1, 2], [3, 4, 5]]
>>> b
[[1, 2], [3, 4]]




https://suwoni-codelab.com/python%20%EA%B8%B0%EB%B3%B8/2018/03/02/Python-Basic-copy/

 

반응형

+ Recent posts