首先你要安裝python,命令行輸入 python 有python提示符 >>> 出現說明安裝成功python
#!/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行和第二行是標準註釋,第一行可讓這個hello.py文件直接在Unix/Linux/Mac上運行,第二行能夠表示該.py文件使用的標準UTF-8編碼;shell
第四行是一個字符串,表示模塊的文檔註釋,任何模塊的第一個字符串都默認爲文檔的註釋編程
以上就是Python模塊的標準文件模板,固然也能夠所有刪掉不寫,可是,按標準辦事確定沒錯。app
1)導入sys
模塊後,咱們就有了變量sys
指向該模塊,利用sys
這個變量,就能夠訪問sys
模塊的全部功能。sys
模塊有一個argv
變量,用list存儲了命令行的全部參數。argv
至少有一個元素,由於第一個參數永遠是該.py文件的名稱函數
2)當咱們在命令行運行hello
模塊文件時,Python解釋器把該模塊內的一個特殊變量__name__
置爲__main__
,而若是在其餘地方導入該hello
模塊時,if
判斷將失敗,所以,這種if
測試可讓一個模塊經過命令行運行時執行一些額外的代碼,最多見的就是運行測試。測試
這裏的地址是完整的地址,編碼
python D:\desktop\forTest.py #文件的完整目錄
結果:spa
打開cmd後直接輸入 python 會進入 python 的 shell 環境,這裏能夠能夠輸入命令,還有就是 shell 裏會有提示符 >>> 命令行
如 print('I love you') 3d
運行結果:
使用 exit() 退出 python 的 shell 環境
File "<stdin>", line 1 錯誤:
在shell 裏面輸入 python +程序名字 ,會出現這個錯誤,應該在終端下運行(見上)
參考連接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017455068170048
這個模塊內的做用域和變量的做用域有些區別,前者區分的是不一樣模塊內的變量名,即該模塊被導入後模塊內的變量是否能被新模塊引用。(可是經過增長下劃線確實能將public變量變爲private變量,在一個模塊中的變量也能受到影響,參見面向對象編程
在模塊中,咱們可能會定義不少函數和變量,有的函數和變量咱們但願給別人使用,可是有的變量和函數咱們不但願被別人使用。在python中,是經過_前綴來實現的。
正常的函數和變量名是公開的(public),能夠被直接引用,好比:abc
,x123
,PI
等;
相似__xxx__
這樣的變量是特殊變量,能夠被直接引用(可是不能夠本身建立),可是有特殊用途,好比上面的__author__
,__name__
就是特殊變量,hello
模塊定義的文檔註釋也能夠用特殊變量__doc__
訪問,咱們本身的變量通常不要用這種變量名;
相似_xxx
和__xxx
這樣的函數或變量就是非公開的(private),不該該被直接引用,好比_abc
,__abc
等;
之因此咱們說,private函數和變量「不該該」被直接引用,而不是「不能」被直接引用,是由於Python並無一種方法能夠徹底限制訪問private函數或變量,可是,從編程習慣上不該該引用private函數或變量。
#被導入的模塊forTest2.py代碼 #__arbitrarily__=='不能任意命名的特殊變量'#不能這樣,會報錯 arbitrarily='能被直接引用的變量' _arbitrarily='非公開,不該該被直接引用,可是能' __arbitrarily='非公開,不該該被直接引用,可是能,和上面的同樣' #做爲測試的模塊,其中導入了forTest2.py import forTest2 print(forTest2.arbitrarily) print(forTest2._arbitrarily) print(forTest2.__arbitrarily) print(forTest2.__name__) #輸出 能被直接引用的變量 非公開,不該該被直接引用,可是能 非公開,不該該被直接引用,可是能,和上面的同樣 forTest2
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
數據封裝、繼承和多態是面向對象編程的三大特色
當咱們試圖導入一個模塊時,python會在指定的路徑下搜索對應的.py文件,若是找不到就會報錯
>>> import mymodule Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named mymodule
默認狀況下,python會搜索當前目錄,全部已安裝的內置模塊和第三方模塊,搜索路徑存放在sys的path變量當中
>>> import sys >>> sys.path ['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', ..., '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
有兩種辦法能夠添加本身的搜索目錄
一是直接修改sys.path,添加要搜索的目錄
>>> import sys >>> sys.path.append('/Users/michael/my_py_scripts')
這種方法是在運行時修改,運行結束後失效
第二種方法時修改環境變量PYTHONPATH,該環境變量的內容會被自動添加到模塊搜索路徑中,設置方式與設置Path環境變量相似。注意只須要添加你本身的搜索路徑,Python本身自己的搜索路徑不受影響