1. 程式人生 > >Python的sys模組如何操作使用,正確的案例詳解

Python的sys模組如何操作使用,正確的案例詳解

Python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。 Python的模組怎樣使用如何操作 我們以內建的sys模組為例,編寫一個hello的模組: #!/usr/bin/env python3

-- coding: utf-8 --

’ a test module ’ author = ‘Michael Liao’ import sys def test(): args = sys.argv if len(args)1: print(‘Hello, world!’) elif len(args)2: print(‘Hello, %s!’ % args[1]) else: print(‘Too many arguments!’) if name

main’: test() 第1行和第2行是標準註釋,第1行註釋可以讓這個hello.py檔案直接在Unix/Linux/Mac上執行,第2行註釋表示.py檔案本身使用標準UTF-8編碼; 第4行是一個字串,表示模組的文件註釋,任何模組程式碼的第一個字串都被視為模組的文件註釋; 如果你還不知道如何正確操作,也沒有正確的學習方法,可以進小編扣扣裙【278136312】 裙公告裡面有正確的學習視訊資料和學習路線,遇到問題裡面有大佬解答指導 第6行使用__author__變數把作者寫進去,這樣當你公開原始碼後別人就可以瞻仰你的大名; 以上就是Python模組的標準檔案模板,當然也可以全部刪掉不寫,但是,按標準辦事肯定沒錯。 後面開始就是真正的程式碼部分。 你可能注意到了,使用sys模組的第一步,就是匯入該模組: import sys 匯入sys模組後,我們就有了變數sys指向該模組,利用sys這個變數,就可以訪問sys模組的所有功能。 sys模組有一個argv變數,用list儲存了命令列的所有引數。argv至少有一個元素,因為第一個引數永遠是該.py檔案的名稱,例如: 執行python3 hello.py獲得的sys.argv就是[‘
hello.py
’]; 執行python3 hello.py Michael獲得的sys.argv就是[‘hello.py’, 'Michael]。 最後,注意到這兩行程式碼: if namemain’: test() 當我們在命令列執行hello模組檔案時,Python直譯器把一個特殊變數__name__置為__main__,而如果在其他地方匯入該hello模組時,if判斷將失敗,因此,這種if測試可以讓一個模組通過命令列執行時執行一些額外的程式碼,最常見的就是執行測試。 我們可以用命令列執行hello.py看看效果: $ python3 hello.py Hello, world! $ python
hello.py
Michael Hello, Michael! 如果啟動Python互動環境,再匯入hello模組: $ python3 Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type “help”, “copyright”, “credits” or “license” for more information.

import hello

匯入時,沒有列印Hello, word!,因為沒有執行test()函式。 呼叫hello.test()時,才能打印出Hello, word!:

hello.test() Hello, world! 作用域 在一個模組中,我們可能會定義很多函式和變數,但有的函式和變數我們希望給別人使用,有的函式和變數我們希望僅僅在模組內部使用。在Python中,是通過_字首來實現的。 如果你還不知道如何正確操作,也沒有正確的學習方法,可以進小編扣扣裙【278136312】 裙公告裡面有正確的學習視訊資料和學習路線,遇到問題裡面有大佬解答指導 正常的函式和變數名是公開的(public),可以被直接引用,比如:abc,x123,PI等; 類似__xxx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊變數,hello模組定義的文件註釋也可以用特殊變數__doc__訪問,我們自己的變數一般不要用這種變數名; 類似_xxx和__xxx這樣的函式或變數就是非公開的(private),不應該被直接引用,比如_abc,__abc等; 之所以我們說,private函式和變數“不應該”被直接引用,而不是“不能”被直接引用,是因為Python並沒有一種方法可以完全限制訪問private函式或變數,但是,從程式設計習慣上不應該引用private函式或變數。 private函式或變數不應該被別人引用,那它們有什麼用呢?請看例子: def _private_1(name): return ‘Hello, %s’ % name def _private_2(name): return ‘Hi, %s’ % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name) 我們在模組裡公開greeting()函式,而把內部邏輯用private函式隱藏起來了,這樣,呼叫greeting()函式不用關心內部的private函式細節,這也是一種非常有用的程式碼封裝和抽象的方法,即:

外部不需要引用的函式全部定義成private,只有外部需要引用的函式才定義為public。