zz: python中if __name__ == '__main__': 的解析

本文详细介绍了Python中模块的__name__属性的作用及应用场景。当直接运行一个.py文件时,其__name__属性值为'__main__';而通过import方式引入时,__name__属性值为模块文件名。利用这一特性可以实现模块被导入时和作为独立程序运行时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ZZ From: http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792463.html

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用.

        模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。

///////////////////////////////////////////////////////////////////////////////////////////////////

在cmd 中直接运行.py文件,则__name__的值是'__main__';

而在import 一个.py文件后,__name__的值就不是'__main__'了;

从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件

如:

#Test.py

class Test:

    def __init(self):pass

    def f(self):print 'Hello, World!'

if __name__ == '__main__':

    Test().f()

#End

 

你在cmd中输入:

C:>python Test.py

Hello, World!

说明:"__name__ == '__main__'"是成立的

 

你再在cmd中输入:

C:>python

>>>import Test

>>>Test.__name__                #Test模块的__name__

'Test'

>>>__name__                       #当前程序的__name__

'__main__'

无论怎样,Test.py中的"__name__ == '__main__'"都不会成立的!

所以,下一行代码永远不会运行到!

//////////////////////////////////////////////////////////////////////////////////

if __name__=='__main__': captureface = CaptureFace() captureface.captureface(someone='lrt_by',number=2000) captureface.facetogray(someone='lrt_by') # In[ ]: if __name__=='__main__': getimgdata = GetImgData() X_zz,y_zz,number_name_zz = getimgdata.readimg() # In[ ]: if __name__=='__main__': getimgdata = GetImgData() X_zz,y_zz,number_name_zz = getimgdata.readimg() # In[130]: if __name__=='__main__': getimgdata = GetImgData() X_lrt_zy,y_lrt_zy,number_name_lrt_zy = getimgdata.readimg() # In[131]: if __name__=='__main__': getimgdata = GetImgData() X_lrt_by,ylrt_by,number_namelrt_by = getimgdata.readimg() # In[138]: len(X_lrt_by) # In[140]: X_lrt_by_2d = X_lrt_by.reshape(1984 , -1) X_lrt_zy_2d = X_lrt_zy.reshape(1987 , -1) # In[63]: X_zz_2d = X_zz.reshape(1991 , -1) # In[66]: X_bz_2d = X_bz.reshape(2000 , -1) # In[142]: df1 = pd.DataFrame(X_zz_2d) df1['是否张嘴'] = 1 df1['是否睁眼'] = 1 df2 = pd.DataFrame(X_bz_2d) df2['是否张嘴'] = 0 df2['是否睁眼'] = 1 df3 = pd.DataFrame(X_lrt_zy_2d) df3['是否张嘴'] = 0 df3['是否睁眼'] = 1 df4 = pd.DataFrame(X_lrt_by_2d) df4['是否张嘴'] = 0 df4['是否睁眼'] = 0 # In[143]: df1 # In[257]: data = pd.concat([df1, df2, df3, df4], ignore_index=True) # In[258]: data # In[259]: data = data.sample(frac=1).reset_index(drop=True) # In[260]: data_y = data[['是否张嘴','是否睁眼']] # In[263]: data = data.drop(['是否张嘴','是否睁眼'],axis=1) # In[265]: data = np.expand_dims(data, axis=(1, 2)) # In[276]: data = np.reshape(data, (-1, 64, 64, 1)) # In[269]: data_y = data_y.values # In[270]: data_y # In[288]: # X, y, number_name = GetImgData(dir='gray_face_images').readimg() # 读取数据 X_train, X_test, y_train, y_test = train_test_split(data, data_y, test_size=0.2, random_state=42) # 将数据拆分成训练集和测试集 model = CnnNet(output_size=2) # 类的实例化 # In[283]: y_train # In[284]: model.cnntrain(X_train,y_train) # 模型训练 # In[285]: pro, pre = model.predict(X_test) # 模型测试 accuracy = (pre == y_test.argmax(axis=1)).mean() # In[286]:
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值