문맥 상 명백하지 않은 이름없는 숫자는 모두 마법의 숫자입니다. 문맥에서 즉시 명백한 의미를 갖는 숫자를 정의하는 것은 조금 바보입니다.
django (python web framework)에서 다음과 같은 원시 숫자로 일부 데이터베이스 필드를 정의 할 수 있습니다.
firstname = models.CharField(max_length=40)
middlename = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
말하는 것보다 더 명확하고 권장되는 방법
MAX_LENGTH_NAME = 40
...
firstname = models.CharField(max_length=MAX_LENGTH_NAME)
middlename = models.CharField(max_length=MAX_LENGTH_NAME)
lastname = models.CharField(max_length=MAX_LENGTH_NAME)
길이를 변경할 필요가 없기 때문에 항상 max_length
필드 의 길이와 비교할 수 있습니다 . 응용 프로그램을 처음 배포 한 후 필드 길이를 변경해야하는 경우 django 코드에서 필드 당 정확히 한 위치에서 변경 한 다음 DB의 스키마를 변경하기 위해 마이그레이션을 추가로 작성해야합니다. max_length
객체 유형의 정의 된 필드 를 참조해야하는 경우 직접 수행 할 수 있습니다. 해당 필드가 Person
클래스 를 정의한 경우 Person._meta.get_field('firstname').max_length
에는max_length
사용 중 (한 곳에 정의 됨). 여러 필드에 동일한 40이 사용되었다는 사실은 독립적으로 변경하고 싶기 때문에 관련이 없습니다. 이름의 길이는 중간 이름 또는 성의 길이에 의존해서는 안됩니다. 이들은 별도의 값이며 독립적으로 변경 될 수 있습니다.
배열 인덱스는 종종 이름이없는 숫자를 사용할 수 있습니다. 파이썬 사전에 넣을 데이터의 CSV 파일이 있고 행의 첫 번째 요소를 사전으로 key
쓰면 다음과 같습니다.
mydict = {}
for row in csv.reader(f):
mydict[row[0]] = row[1:]
물론 나는 이름 index_column = 0
을 짓고 다음과 같은 것을 할 수 있습니다.
index_col = 0
mydict = {}
for row in csv.reader(f):
mydict[row[index_col]] = row[:index_col] + row[index_col+1:]
또는 더 나쁜 정의 after_index_col = index_col + 1
를 제거하기 위해 정의 index_col+1
하지만 내 관점에서 코드가 명확하지는 않습니다. 또한 index_col
이름을 지정하면 열이 0이 아니더라도 (그래서 row[:index_col] +
부분) 코드를 작동시키는 것이 좋습니다 .