什麼是if __name__ = "__main__" 啊??

Reading time ~1 minute

作者: 陳璿丞

if name == main

之前學Flask 常常會看到這一段的code, 但不知所以然。本著得過且過的心態。但這個問題一直困擾著我。其實google 一下就會有很多解答了喔。不過來看一下Python document 是怎麼說的:

The name attribute must be set to the fully-qualified name of the module. This name is used to uniquely identify the module in the import system.

那關於__mian__呢?

main’ is the name of the scope in which top-level code executes. A module’s name is set equal to ‘main’ when read from standard input, a script, or from an interactive prompt.

也就是說,所以有的module都有一個內建的__name__的屬性。

那什麼是main呢? 是用來檢查這段code是不是import而來的,如果是import來的,這裡的__name__ attribute就不會維持’main‘而是其他的了。

舉個例子來說好了:

# first.py
if __name__ == '__main__':
  print('這是來自本來的module~~')
else:
  print('這是別人家來的!!')
# second.py
import first
$python first.py
這是來自本來的module~~
$python second.py
這是別人家來的!!

Taiwan Future

前天值班的時候,讀了三本書很有感受力。一是司馬遼太郎台灣紀行;顏世鴻醫師的青島東路三號;楊威理寫雙鄉記,葉盛吉的故事。顏世鴻、葉盛吉都是台大醫科的學長;也是和我阿公同的年代的人。楊威理是葉盛吉在日本高中的同學。他們三個在大學的時候,選擇相信共產党,其中兩個被當成共諜,在白色...… Continue reading