Python開發基礎-Day1-python入門
編程語言分類
機器語言
使用二進制代碼直接編程,直接與硬件交互,執行速度非常快,靈活,但是開發難度高,開發效率低下,缺乏移植性。
匯編語言
對機器語言指令進行了英文封裝,較機器語言容易記憶,直接與硬件交互,執行速度快,執行文件小,但是開發難度相對也很高,開發效率低
高級語言
語法簡單,容易理解,開發難度低效率高,開發後測試方便,但是開發的程序需要經過轉換才能執行,所以執行效率相對慢,可移植性高。
解釋執行:代碼執行時候,解釋器按照源代碼文件中的內容,一條條解釋並運行,相對編譯執行速度慢,但出錯方便調試,開發效率高。
例如Python、PHP、Ruby、JavaScript等
編譯執行:程序執行前,編譯器會將源代碼一次性編譯成機器能夠識別的指令文件,然後運行編譯後的文件,速度相對表解釋執行要高,但是出錯後修改源代碼需要重新編譯執行,開發效率相對低
例如C語言、C++、GO、Swift、Object-C等
解釋執行和編譯執行在執行效率上雖然有差別,但是對於當前計算機的硬件計算速度的提升,加上網絡環境的限制,執行速度相對來說並不是關鍵,開發效率才是關鍵。
像Java和C#屬於混合語言,即既有編譯執行也有解釋執行。
Python簡介
Python介紹
Python是一門解釋型編程語言,平臺兼容性高,省略一堆屁話,這是筆記!!!!
解釋型語言依賴於解釋器,python解釋器執行代碼文件的過程如下:
打開python解釋器
python解釋器從硬盤調用py文件到內存
python解釋器執行讀入內存的文件代碼,該過程詳細為:py文件-字節碼文件-解釋器-機器碼-執行
python文件在執行過程中,不會保存字節碼文件,每次執行py文件時候,都會先轉化成字節碼文件。
python在import(導入)py文件的時候,會生成pyc的字節碼文件保存下來。
Python分類
Cpython(最常用):使用C語言實現的python,官方版本,Cpython會將源代碼文件轉換成pyc字節碼文件使用到python虛擬機上執行
Jpython:使用Java實現的python,將Python代碼動態編譯成Java字節碼,然後在JVM上運行
IronPython:Python的C#實現,IronPython將Python代碼編譯成C#字節碼,然後在CLR上運行
PyPy(特殊):Python實現的Python,將Python的字節碼字節碼再編譯成機器碼
RubyPython、Brython.....
除了PyPy外,執行流程如下圖:
代碼文件首先轉換層字節碼文件,字節碼文件流入解釋器,解釋器轉化成機器碼後執行輸出。
Python解釋器版本
版本3,最新的版本為3.6.1
版本2,最新的版本為2.7.13,2020年停止更新
Python入門
安裝
Python Linux版本安裝
安裝過程轉 http://www.cnblogs.com/zero527/p/6920965.html
Python Windows版本安裝
雙擊安裝,一路下一步,記得勾選自動添加環境變量
第一行代碼"hello world"
解釋器只用來測試代碼,並不能保存代碼,想要永久保存,需要將代碼寫入到文件中。
解釋器執行:
C:\Users\Mr.chai>python Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> "hello world" #由於解釋器自帶輸出功能,所以輸入一個字符串會自動給出輸出 ‘hello world‘ >>> print("hello world") #print為輸出,輸出的內容是括號中的內容 hello world >>>
py文件執行:
創建一個hello.py文件,內容寫入print("hello world")
C:\Users\Mr.chai>python C:\hello.py
hello world
python文件頭(linux)
在linux執行hello.py文件,也是用python 路徑/hello.py,但是在linux可以用./方法執行文件,直接執行./hello.py,會報錯,原因是找不到解釋器,所以要在hello.py文件中加一個頭部信息,標識解釋器位置
#!/usr/bin/env python #該行只對linux有效,表示/usr/bin/所有的python解釋器,可以指定一個如:/usr/bin/python # -*- coding: utf-8 -*- #指定字符編碼
print(‘hello world‘)
內容註釋
註釋為說明性文字
# 單行註釋
‘‘‘ str...str ‘‘‘ 三引號為多行註釋
模塊功能導入
import sys 導入系統模塊,允許該文件運行擴展的系統功能
變量
變量是用來表示程序運行時候改變的狀態的,是一個抽象的概念。
變量組成:
[變量名]=[變量實際的值]
變量名:變量命名一般字母或下劃線開頭,剩下的可以是字母和數字,變量名不能和關鍵字沖突,如print、and等系統關鍵字
變量值:可以改變的值,一個變量名可以重復賦值,但是變量實際的值為最後賦值後的值,變量的值存放在內存空間
變量類型:
局部變量:只在某一段代碼中生效的變量
全局變量:在整個程序的運行中生效的變量
變量賦值與調用:
#!/usr/bin/env python # -*- coding: utf-8 -*- name="bob" #賦值字符串 age=20 #賦值整數 print(name,age) #輸出變量
print("my name is %s,i am %s years old." % (name,age)) # %s表示占位,第一個%s調用後面括號裏面的第一個變量,第二個%s調用第二個變量
重復賦值指的是改變變量名的引用,引用的值改變了。
id後面跟變量,查看內存id號
>>> a=1 >>> id(a) 1379185728 >>> b=1 >>> id(b) 1379185728
變量占用的內存空間比較小的,不再開辟內存空間,將直接引用,如果占用的內存空間大,那引用的過程中將開辟新的內存空間,這是python的一種優化機制
>>> a="abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz" >>> id(a) 2884867588944 >>> b="abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz" >>> id(b) 2884867588624
輸入輸出
python2中的raw_input()個python3中的input()功能一樣,會把所有用戶的輸入轉成str類型
>>> name=input("name:") name:bob >>> age=input("age:") age:20 >>> type(name) <class ‘str‘> >>> type(age) <class ‘str‘>
getpass模塊,可以隱藏輸入
>>> password=getpass.getpass("pass:") pass: >>> print(password) 123456
getpass模塊,隱藏密碼輸入
import getpass
name=input("用戶名:")
password=getpass.getpass(‘密碼:‘)
print("用戶名:%s 密碼:%s" % (name,password)
Python開發基礎-Day1-python入門