python基礎
公開發布時間1991年
是一種面向對象、解釋型計算機程序設計語言由Guido van Rossum於1989年發明第一個公開發行版發行於1991年。
優點
簡單 Python是一種代表簡單主義思想的語言。
易學 Python極其容易上手因爲Python有極其簡單的說明文檔
速度快 Python的底層是用 C 語言寫的很多標準庫和第三方庫也都是用 C 寫的運行速度非常快。
免費開源 Python是FLOSS自由/開放源碼軟件之一
輕鬆拿高薪
Python用來做什麼
軟件開發遊戲、搜索、嵌入式、網站、C/S軟件
系統管理腳本、運維自動化工具
編程要求
縮進統一
python中的語法格式沒有結束符統一通過縮進進行確定不同的執行流程和語句同一流程和語句應保持縮進統一
在Linux系統中使用python首先確定python軟件已經安裝
1 2 | [root@localhost ~] # rpm -qf`which python` python-2.7.5-16.el7.x86_64 |
如果沒有安裝可執行以下命令進行安裝
1 | [root@localhost ~] # yum -yinstall python |
win7x64位 python 2.7.10
鏈接http://pan.baidu.com/s/1sjuv5rn密碼i5su
python源碼包下載地址
1、交互式解釋器
1 2 3 4 5 6 | [root@localhost ~] # python Python 2.7.5 (default, Feb 112014, 07:46:25) [GCC 4.8.2 20140120 (Red Hat4.8.2-13)] on linux2 Type "help" , "copyright" , "credits" or "license" for moreinformation. >>> print "Hello,world!" Hello,world! |
1 2 3 4 5 6 | 退出方法 >>> exit () 或者 >>> quit() 或者 Ctrl+D |
2、算法的使用
基本運算符 + - * /
特殊運算符
//取整運算
%取餘運算
**冪值運算
1 2 3 4 5 6 7 8 | >>> 2 + 2 4 >>> 7 // 3 #7整除3得2 2 >>> 7 % 3 #7除以3餘數爲1 1 >>> 7 ** 3 #7的3次冪343 343 |
注乘法運算的特例
1 2 3 4 | >>> 1 * 10 10 >>> '1' * 10 '1111111111' |
小數運算
如果參與運算的兩個數中有一個爲小數那麼結果也是小數
1 2 3 4 5 6 | >>> 3.0 * 2.0 6.0 >>> 3.0 / 2 1.5 >>> 3.0 - 2.0 1.0 |
3、變量的賦值
變量名可以包括字母數字和下劃線變量不能以數字開頭
與shell腳本不同python在引用變量時不需要加上$符號便可以直接引用
1 2 3 | >>> x = 2 >>> x * 2 4 |
對於字符串的賦值需要加上引號
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> rm =ZhaoXiangJie Traceback (most recentcall last): File "<stdin>" , line 1, in <module> NameError: name 'ZhaoXiangJie' is not defined >>> rm = 'ZhaoXiangJie' >>> rm 'ZhaoXiangJie' >>> RM= rm >>> RM 'ZhaoXiangJie' >>> RM= 'rm' >>> RM 'rm' |
4、語句操作
1 2 | >>> print 2 * 2 4 |
5、獲取用戶輸入
1 2 3 4 5 6 | >>> x =input( "x: " ) x: 33 >>> y =input( "y: " ) y: 44 >>> print x * y 1452 |
6、函數
函數就像小程序一樣可以用來實現特定的功能。Python中有很多函數用戶也可以自定義函數
常見函數
pow 冪值運算
abs 絕對值運算
round 四捨五入
floor 返回值下舍整數
ceil 返回值上入整數
sqrt 平方根運算
int 取整運算
1 2 3 4 | >>> pow(7,3) 343 >>> abs(-10) 10 |
對於不能直接調用的函數可以插入對應的模塊進行調用
1 2 3 4 5 | >>> import math #插入math模塊 >>> math.floor(32.9) #使用floor函數 32.0 >>> int(math.floor(32.9)) 32 |
如果不希望每次調用函數的時候都寫上模塊的名稱可以結合from進行實現
1 2 3 | >>> from mathimport sqrt >>> sqrt(9) 3.0 |
也可以通過變量來引用函數
1 2 3 | >>> foo = math.sqrt >>> foo(9) 3.0 |
如果模塊的名稱比較長使用起來不方便也可以通過以下方法進行設置
1 2 3 | >>> from math importsqrt as a >>> a(9) 3.0 |
同時導入多個模塊
1 | >>> import sys,os |
7、字符串的引用
單引號和雙引號都可以引用字符串使用時應避免出現混亂
1 2 3 4 5 6 | >>> "Hello,world!" 'Hello,world!' >>> 'Hello,world!' 'Hello,world!' >>> '"Hello,world!" she said' '"Hello,world!" shesaid' |
針對以下這種情況顯然使用單引號是不行的
1 2 3 4 5 6 7 8 9 10 11 | >>> 'I' m a boy' File "<stdin>" , line 1 'I' m a boy' ^ SyntaxError: invalid syntax >>> "I'm aboy" "I'm a boy" 或者通過 \ 對單引號進行轉義 >>> 'Let\'s go' "Let's go" |
如果要引用數值可以通過函數str 和 repr來實現
repr 返回值的字符串表示形式
str 將值轉換爲字符串
1 2 3 4 5 6 7 8 9 10 11 | >>> police = 110 >>> print "報警請撥" + police #直接引用會報錯 Traceback (most recent calllast): File "<stdin>" , line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects >>> print "報警請撥" + repr(police) 報警請撥110 >>> print "報警請撥" + str(police) 報警請撥110 |
長字符串的引用
如果需要寫一個非常非常長的字符串它需要跨多行可以使用三個引號代替普通引號
1 2 3 4 5 6 7 8 9 10 | >>> print '' 'This isa very long string. ... It continues there ... And it's not over yet ... "Hello,world!" ... Still here. '' ' This is a very long string. It continues there And it's not over yet "Hello,world!" Still here. |
原始字符串的使用
原始字符串對於反斜線並不會特殊對待。原始字符串以r開頭
例打印windows系統的C:\nowhere這樣的路徑
1 2 3 | >>> print 'C:\nowhere' C: owhere |
當然可以通過轉義符 “\”進行轉義
1 2 | >>> print 'C:\\nowhere' C:\nowhere |
但是相對於一個更長的目錄這個時候就很不方便
1 2 | >>> print 'C:\\Program Files\\fonrd\\foo\\bar\\baz\\frozz\bozz' C:\ProgramFiles\fonrd\foo\bar\baz\frozozz |
通過原始字符串的方式可以很輕鬆的實現
1 2 | >>> print r 'C:\ProgramFiles\fonrd\foo\bar\baz\frozz\bozz' C:\ProgramFiles\fonrd\foo\bar\baz\frozz\bozz |
8、input和raw_input 的比較
input會默認用戶輸入的是合法的Python表達式而raw_input會把所有的輸入當做原始數據進行處理
例一使用input進行輸入時輸入的代碼內容需加上引號才能進行執行
1 2 3 4 5 6 7 8 9 10 | >>> name =input( "What is your name? " ) What is your name? zxj Traceback (most recent calllast): File "<stdin>" , line 1, in <module> File "<string>" , line 1, in <module> NameError: name 'zxj' is notdefined >>> name =input( "What is your name? " ) What is your name? 'zxj' >>> print name zxj |
例二使用raw_input進行輸入時輸入的代碼內容不需要加引號
1 2 3 4 | >>> name =raw_input( "What is your name? " ) What is your name? zxj >>> print "Hello, " + name + "!" Hello, zxj! |
用Python編寫腳本
首行加上python命令的執行路徑可以使python腳本直接就能執行不需要通過python 腳本名這種方式也能執行當然前提是腳本要有x權限腳本的後綴名爲 .py
腳本中#開頭爲註釋行
1 2 3 4 | [root@localhost ~] # vimhello.py #!/usr/bin/python name = raw_input ( "Whatis your name ?" ) print 'Hello,' + name + '!' |
執行腳本文件
方法一python + 腳本名
1 2 3 | [root@localhost ~] # pythonhello.py What is your name?RM Hello, RM! |
方法二給腳本加上x權限直接執行
1 2 3 4 | [root@localhost ~] # chmod u+xhello.py [root@localhost ~] # ./hello.py What is your name?MK Hello, MK! |
在腳本中如果需要同時引用很多變量時可以通過%s 和%d 來實現
%s 用來引用字符串
%d 用來引用數字
實戰
1、寫一個統計人員信息的python腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python name = raw_input( 'your name:' ) age = raw_input( 'your age: ' ) job = raw_input( 'your job: ' ) print "***********************" print "***** your info *****" print "***********************" #print '\t'"Name: "+ name #print '\t'"Age: " +age #print '\t'"Job: " +job print '' '\tName: %s \tAge: %s \tJob: %s '' ' % (name,age,job) |
2、python中插入tab模塊實現tab自動補全
腳本內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@xuegod163 ~] # vim tab.py #!/usr/bin/python # python startup file import sys import readline import rlcompleter import atexit import os # tab completion readline.parse_and_bind( 'tab:complete' ) # history file histfile = os.path. join (os.environ[ 'HOME' ], '.pythonhistory' ) try: readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file,histfile) del os, histfile, readline,rlcompleter |
插入tab模塊
1 2 3 4 5 | >>> import tab >>> import sys >>> sys. sys.__class__( sys.builtin_module_names sys.last_type( sys.__delattr__( sys.byteorder sys.last_value |
查詢python版本
1 2 | >>> sys.version_info sys.version_info(major=2,minor=7, micro=5, releaselevel= 'final' , serial=0) |
擴展
插入模塊時出現以下報錯信息原因tab模塊的路徑不正確
1 2 3 4 5 6 7 8 9 10 11 12 | >>> import tab Traceback (most recent calllast): File "<stdin>" , line 1, in <module> ImportError: No module namedtab 解決方法 >>>sys.path.append( '/etc/sysconfig/network-scripts/' ) Traceback (most recent calllast): File "<stdin>" , line 1, in <module> NameError: name 'sys' is notdefined >>> import sys >>>sys.path.append( '/etc/sysconfig/network-scripts/' ) |
1 2 | >>> sys.path [ '' , '/usr/lib64/python27.zip' , '/usr/lib64/python2.7' , '/usr/lib64/python2.7/plat-linux2' , '/usr/lib64/python2.7/lib-tk' , '/usr/lib64/python2.7/lib-old' , '/usr/lib64/python2.7/lib-dynload' , '/usr/lib64/python2.7/site-packages' , '/usr/lib64/python2.7/site-packages/gtk-2.0' , '/usr/lib/python2.7/site-packages' , '/etc/sysconfig/network-script/' , '/etc/sysconfig/network-scripts/' ] |
1 2 3 4 | >>> import tab >>> sys. sys.__class__( sys.builtin_module_names sys.last_type( sys.__delattr__( sys.byteorder sys.last_value |
os.system可以直接調用shell中的命令
1 2 3 | >>> import os >>> os.system( 'uname-r' ) 3.10.0-229.el7.x86_64 |
學習過程中如果問題請留言。更多內容請加
學神IT-linux講師-RM老師QQ2805537762
學神IT-戚老師QQ3341251313
學神IT-旭斌QQ:372469347
學神IT教育RHEL7交流羣468845589