python1

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源碼包下載地址

https://www.python.org/

wKiom1aP2bGhkoWrAAFraBoS21Y812.png

 

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!


 

wKiom1aP2YvBgj1aAADFF6EFX1c195.png

 

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章