標籤:amd python 動態編譯 targe 路徑 ice src windows lan
程式設計語言分類
機器語言
使用二進位代碼直接編程,直接與硬體互動,執行速度非常快,靈活,但是開發難度高,開發效率低下,缺乏移植性。
組合語言
對機器語言指令進行了英文封裝,較機器語言容易記憶,直接與硬體互動,執行速度快,執行檔案小,但是開發難度相對也很高,開發效率低
進階語言
文法簡單,容易理解,開發難度低效率高,開發後測試方便,但是開發的程式需要經過轉換才能執行,所以執行效率相對慢,可移植性高。
解釋執行:代碼執行時候,解譯器按照原始碼檔案中的內容,一條條解釋並運行,相對編譯執行速度慢,但出錯方便調試,開發效率高。
例如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>pythonPython 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32Type "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.pyhello 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入門