Python學習之路1 - 基礎入門

本文內容java

  1. Python介紹
  2. 安裝Python解釋器
  3. 輸出
  4. 變量
  5. 輸入
  6. 條件判斷語句
  7. 循環語句
  8. 模塊講解
  9. 三元運算
  10. 字符串和二進制的相互轉化

本系列文章使用的Python版本爲3.6.2python

使用開發工具爲Pycharm2017linux

1、Python介紹

Python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。c++

最新的TIOBE排行榜,Python趕超PHP佔據第五,Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。程序員

目前Python主要應用領域:數據庫

  • 雲計算:雲計算最火的語言, 典型應用OpenStack
  • WEB開發:衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能:典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維:運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI:PyQT, WxPython,TkInter

Python在一些公司的應用:編程

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA:美國中情局網站就是用Python開發的
  • NASA:美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat:世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣:公司幾乎全部的業務均是經過Python開發的
  • 知乎:國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。 

Python ****是一門什麼樣的語言?

編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,咱們一塊兒來看一下。windows

編譯和解釋的區別

編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;安全

而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的。網絡

這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)。

就好像你想看一本英文書,編譯器會將整本書翻譯成中文供你觀看,這時你看的就會很方便,怎麼反覆看都沒有問題;解釋器只會解釋你當前想要看的語句,若是你想再次看一遍一樣的語句則須要再次找解釋器解釋一遍,這樣就會給你的閱讀帶來麻煩。

動態語言和靜態語言

一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。

強類型定義語言和弱類型定義語言

(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。

強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

經過上面這些介紹,咱們能夠得出,python是一門動態解釋性的強類型定義語言。那這些基因使成就了Python的哪些優缺點呢?咱們繼續往下看。

Python的優勢

當你用一種語言開始做真正的軟件開發時,你除了編寫代碼外,還須要不少基本的已經寫好的現成的東西,來幫助你加快開發進度。好比說,要編寫一個電子郵件客戶端,若是先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。高級編程語言一般都會提供一個比較完善的基礎代碼庫,讓你能直接調用,好比,針對電子郵件協議的SMTP庫,針對桌面環境的GUI庫,在這些已有的代碼庫的基礎上開發,一個電子郵件客戶端幾天就能開發出來。

Python就爲咱們提供了很是完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱做「內置電池(batteries included)」。用Python開發,許多功能沒必要從零編寫,直接使用現成的便可。

除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。固然,若是你開發的代碼經過很好的封裝,也能夠做爲第三方庫給別人使用。

許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。不少大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。

龜叔給Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。

總的來講,Python的哲學就是簡單優雅,儘可能寫容易看明白的代碼,儘可能寫少的代碼。若是一個資深程序員向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你能夠盡情地嘲笑他。

那Python適合開發哪些類型的應用呢?

首選是網絡應用,包括網站、後臺服務等等;

其次是許多平常須要的小工具,包括系統管理員須要的腳本任務等等;

另外就是把其餘語言開發的程序再包裝起來,方便使用。

Python的缺點

第一個缺點就是運行速度慢,和C程序相比很是慢,由於Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時,因此很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,因此很是快。

可是大量的應用程序不須要這麼快的運行速度,由於用戶根本感受不出來。例如開發一個下載MP3的網絡應用程序,C程序的運行時間須要0.001秒,而Python程序的運行時間須要0.1秒,慢了100倍,但因爲網絡更慢,須要等待1秒,你想,用戶能感受到1.001秒和1.1秒的區別嗎?這就比如F1賽車和普通的出租車在北京三環路上行駛的道理同樣,雖然F1賽車理論時速高達400千米,但因爲三環路堵車的時速只有20千米,所以,做爲乘客,你感受的時速永遠是20千米。

第二個缺點就是代碼不能加密。若是要發佈你的Python程序,實際上就是發佈源代碼,這一點跟C語言不一樣,C語言不用發佈源代碼,只須要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe文件)發佈出去。要從機器碼反推出C代碼是不可能的,因此,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發佈出去。

這個缺點僅限於你要編寫的軟件須要賣給別人掙錢的時候。好消息是目前的互聯網時代,靠賣軟件受權的商業模式愈來愈少了,靠網站和移動應用賣服務的模式愈來愈多了,後一種模式不須要把源碼給別人。

再說了,如今如火如荼的開源運動和互聯網自由開放的精神是一致的,互聯網上有無數很是優秀的像Linux同樣的開源代碼,咱們千萬不要高估本身寫的代碼真的有很是大的「商業價值」。那些大公司的代碼不肯意開放的更重要的緣由是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。

2、安裝Python解釋器

在Mac上安裝Python

若是你正在使用Mac,系統是OS X 10.8~10.10,那麼系統自帶的Python版本是2.7。要安裝最新的Python 3.6,有兩個方法:

方法一:從Python官網下載Python 3.6的安裝程序(網速慢的同窗請移步國內鏡像),雙擊運行並安裝;

方法二:若是安裝了Homebrew,直接經過命令brew install python3安裝便可。

在Linux上安裝Python

若是你正在使用Linux,那麼基本表明你有着Linux管理經驗,Linux上自帶Python2,若是想升級到最新版應該難不倒你的。

在Windows上安裝Python

首先,根據你的Windows版本(64位仍是32位)從Python的官方網站下載Python 3.6對應的64位安裝程序或32位安裝程序,而後,運行下載的EXE安裝包:

特別要注意勾上Add Python 3.6 to PATH,而後點「Install Now」便可完成安裝。

3、輸出

輸出方式常用的有兩種,第一種是print()函數,下面咱們輸出hello world。

print("hello world")

輸出結果:

第二種輸出方式須要引入sys庫,而後使用sys.stdout.write()函數輸出。

import sys
sys.stdout.write("afsd")

輸出結果:

從輸出結果能夠看出兩種輸出方式的差異,print()函數輸出結果後會再加一個換行,而sys.stdout.write()則沒有換行。

Python和其餘經常使用高級語言不一樣的地方是Python一條語句結束時不須要加分號,而且在Python中也不會用到大括號,Python的語句就只是用換行符和縮進來表示語句之間的關係。

換行就表示一條語句的結束,縮進表示語句間的包含關係。

4、變量

因爲Python是動態類型語言,因此不須要定義變量類型,直接寫變量名就能夠。

name = "my name is Vector"
print(name)

輸出結果:

在Python3中是能夠直接輸入中文的,例如print(「姓名」)這樣,可是在Python2中須要在文件的頂部加上  -- coding:utf-8 -- 這句話,由於Python3的默認字符爲Unicode,而Python2的默認字符爲ASCII。

在Python中不只有單行的字符串,還有多行的字符串,多行字符串用 '''內容''' 標記,以下。

msg = '''
這裏是第一行
這裏是第二行
這裏是第三行
'''
print(msg)

輸出結果:

註釋

Python中的單行註釋用 # 來註釋,以下。

print('hello world') #這裏即將輸出hello world

多行註釋用三個單引號來標記 '''內容''',以下。

'''
這裏是第一行註釋
這裏是第二行註釋
這裏是第三行註釋
'''

在Python中單引號和雙引號沒有區別,都不會轉義其餘字符。

5、輸入

用戶輸入一般咱們用input()函數,以下。

username = input('username:')
password = input('password:')
print(username,password)

咱們輸入vector和asd123

輸出結果:

有了輸入後,咱們就能夠控制格式化輸出了。

第一種格式化輸出方式

name = input('name:')
age = input('age:')

info = '''
------------- Info --------------
Name:''' + name + '''
age:''' + age + '''
------------- Over --------------
'''
print(info)

這裏咱們輸入vector和18

輸出結果:

第二種格式化輸出方式

用 %s %d %f 等來控制格式,並在結尾一次傳入參數,傳參格式爲 %(參數1,參數2,...)

%s表明字符串,%d表明正數,%f表明浮點數。

name = input('name:')
age = int(input('age:'))

info = '''
------------- Info --------------
Name:%s
age:%d
------------- Over --------------
'''%(name,age)
print(info)

輸出結果:

若是想將輸出的內容變成紅色,則用\033[31;1m%s\033[0m
若是想將輸出的內容變成綠色,則用\033[32;1m%s\033[0m

格式:\033[顯示方式;前景色;背景色m

說明:
前景色 背景色 顏色

30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

顯示方式 意義

0 終端默認設置
1 高亮顯示
4 使用下劃線
5 閃爍
7 反白顯示
8 不可見

例子:

\033[1;31;40m    <!--1-高亮顯示 31-前景色紅色  40-背景色黑色-->
\033[0m          <!--採用終端默認設置,即取消顏色設置-->

下面演示一下輸出結果帶顏色的例子:

name = input('name:')
age = int(input('age:'))

info = '''
------------- Info --------------
Name:\033[31;1m%s\033[0m  #輸出結果爲紅色
age:\033[32;1m%s\033[0m  #輸出結果爲綠色
------------- Over --------------
'''%(name,age)
print(info)

輸出結果:

第三種格式化輸出方式

在字符串中插入形參(形參用大括號標記{形參}),最後在結尾給形參賦值。

name = input('name:')
age = int(input('age:'))

info = '''
------------- Info --------------
Name:{_name}
age:{_age}
------------- Over --------------
'''.format(_name=name,_age=age)
print(info)

輸出結果:

第四種格式化輸出方式

形參用數字表示,在結尾直接按照順序給形參賦值。

name = input('name:')
age = int(input('age:'))

info = '''
------------- Info --------------
Name:{0}
age:{1}
------------- Over --------------
'''.format(name,age)
print(info)

輸出結果:

 

輸入變成密文

須要引入getpass模塊。

import getpass
password = getpass.getpass("password:")
print(password)

可是這個getpass()這個函數在pycharm中很差使,在其餘工具中好使。

6、條件判斷語句

格式:

if 條件1 and 條件2 or 條件3:
    pass # 注意這裏必定要有縮進
elif 條件4 and 條件5:
    pass
else:
    pass

例子:

_username = 'rev'
_password = 'rev123'

username = input('username:')
password = input('password:')

if _username == username and _password == password:
    print('Welcome user {name} login...'.format(name = username))# 注意這裏必定要有縮進
elif _username == username and _password != password:
    print('password error!')
else:
    print('login fail..')# 注意這裏必定要有縮進

7、循環語句

循環語句之while

Python中的while還有else處理。

例子:

while True:
    print('this is loop...')
    break
else:
    print('若是while循環條件不符合了,則執行這裏的代碼')

循環語句之for

格式1:

for i in range(10):
    print('loop ',i)

這裏的range表明循環次數,i 從0來是循環

輸出結果:

格式2:

for i in range(0,10,2):
    print('loop ',i)

range中的第一個參數表明從幾開始,第二個參數表明到幾結束(不包括10),第三個參數2表明隔一個執行一次

格式3:

for i in "fasdfasd":
    print('loop ',i)

Python中的for循環還能夠循環字符串、列表、元組等。

輸出結果:

8、模塊講解

模塊之sys

print(sys.path) # 打印環境變量
print(sys.argv) # 打印當前腳本的路徑,在pycharm中打印絕對路徑,在命令行中打印相對路徑(原本打印的就是相對路徑)
one = sys.argv[1] #用來在外部調用的時候傳參, 1表明傳入的第一個參數,
two = sys.argv[2] #2表明傳入的第二個參數, 這樣外部調用的時候就能夠傳多個參數了

模塊之os

print(os.system('dir')) # system函數就是命令行
cmd = os.system('dir')
print(cmd) # 這裏輸出的是 0 由於,system是直接把輸出到屏幕上,並非返回,若是輸出成功則返回0

cmd = os.popen('dir').read() #popen()方法返回的是該對象的地址,read()方法是將地址中的內容讀出來
print(cmd)

# 建立目錄函數
os.mkdir('new_dir')

9、三元運算

//result = 值1 if 條件 else 值2
a,b,c = 1,3,5
d = a if a > b else c
print(d) # d = c = 5
# 若是條件爲真:result = 值1
# 若是條件爲假:result = 值2

10、字符串和二進制的相互轉化

msg = '我愛大延邊日不落帝國'
print(msg) # 字符串輸出
print(msg.encode(encoding='utf-8')) # 將字符串轉換成二進制
print(msg.encode(encoding='utf-8').decode(encoding='utf-8')) # 將二進制轉換成字符串
# 若是encode和decode不寫參數,默認就是utf-8
相關文章
相關標籤/搜索