天天看點

python子產品name屬性和argv參數

作者:梯閱線條

1.1 子產品内置屬性name

描述

python子產品都有個内置屬性name。

NO 子產品使用 描述
1 頂層檔案執行 name為’main’場景:作為頂層檔案執行,比如 python module.py。
2 作為子產品導入 name為子產品名場景:作為子產品導入,比如 import module

檔案内容

E:\documents\F盤\nameattr.py

import os
def testabspath():
    print("run:{}".format(os.path.abspath(__file__)))
    print("__name__:{}".format(__name__))
    
if __name__ == '__main__':
    testabspath()           

示例

# 打開cmd 執行下面示例
# 頂層檔案執行,__name__ 為 __main__
E:\documents\F盤>python nameattr.py
run:E:\documents\F盤\nameattr.py
__name__:__main__

# 作為子產品導入,__name__ 為 子產品名稱
E:\documents\F盤>python
>>> import nameattr
>>> nameattr.testabspath()
run:E:\documents\F盤\nameattr.py
__name__:nameattr
>>> exit()           

1.2 使用name單元測試

用法

if __name__ == '__main__':
    執行語句           

描述

python子產品作為頂層檔案執行時,name為’main’,會執行if内的語句。如果是作為子產品導入,則不會執行if内的語句。可以通過if内的執行語句對子產品檔案的功能進行測試。

檔案内容

E:\documents\F盤\nameattr.py

import os
def testabspath():
    print("run:{}".format(os.path.abspath(__file__)))
    print("__name__:{}".format(__name__))
def maxmin(testf,*args):
    res = args[0]
    for arg in args[1:]:
        if testf(arg,res):
            res = arg
    return res
def minf(x,y):return x<y
def maxf(x,y):return x>y

if __name__ == '__main__':
nums=[5,6,3,2,1,8]
testabspath()
    print("{}最小值為:{}".format(nums,maxmin(minf,*nums)))
    print("{}最大值為:{}".format(nums,maxmin(maxf,*nums)))           

示例

# 打開cmd 執行下面示例
E:\documents\F盤>python nameattr.py
run:E:\documents\F盤\nameattr.py
# 頂層檔案執行,__name__ 為 __main__,自動調用if内語句
__name__:__main__
[5, 6, 3, 2, 1, 8]最小值為:1
[5, 6, 3, 2, 1, 8]最大值為:8           

1.3 指令行參數argv

描述

python子產品作為頂層檔案執行時,可以向運作腳本傳遞參數,并且通過sys.arg清單擷取參數。

檔案内容

E:\documents\F盤\argvtest.py

import sys,os

print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))

def testargva():
    for i,x in enumerate(sys.argv):
        print("第{}個參數為:{}".format(i,x))
        
testargva()           

示例

# 打開cmd 執行下面示例
E:\documents\F盤>python argvtest.py 'a' 'b' 1 2 3
run:E:\documents\F盤\argvtest.py
__name__:__main__
第0個參數為:argvtest.py
第1個參數為:'a'
第2個參數為:'b'
第3個參數為:1
第4個參數為:2
第5個參數為:3