python學習 day1
1、python語言劃分:
編程語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言
編譯型與解釋型
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。
解釋型
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
2、python語言優缺點
優點
簡單————Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專註於解決問題而不是去搞明白語言本身。
易學————就如同你即將看到的一樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。
免費、開源————Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。這是為什麽Python如此優秀的原因之一——它是由一群希望看到一個更加優秀的Python的人創造並經常改進著的。
高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麽你的所有Python程序無需修改就可以在下述任何平臺上面運行。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平臺!
解釋性————這一點需要一些解釋。一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/轉載器軟件把你的程序從硬盤復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程序拷貝到另外一臺計算機上,它就可以工作了,這也使得你的Python程序更加易於移植。
面向對象————Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象編程。
可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。
豐富的庫————Python標準庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。
規範的代碼————Python采用強制縮進的方式使得代碼具有極佳的可讀性。
缺點
運行速度,有速度要求的話,用C++改寫關鍵部分吧。(除非是程序對速度要求特別嚴格,一般可以忽略)
國內市場較小(國內以python來做主要開發的,目前只有一些web2.0公司)。但時間推移,目前很多國內軟件公司,尤其是遊戲公司,也開始規模使用他。
中文資料匱乏(好的python中文資料屈指可數)。托社區的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高級內容還是只能看英語版。
構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby由於歷史較短,構架開發的相對集中。Ruby on Rails 構架開發中小型web程序天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,項目也多。
3、python編碼
python2默認的編碼是ASCII,python3默認的編碼是utf-8
1 python2
2
3 #!/usr/bin/python
4 # -*- coding: UTF-8 -*-
5
6 print "你好,世界" #如何不強制指定字符集是會出現亂碼
7
8
9 python3
10 #!/usr/bin/python
11
12 print ("你好,世界") #不指定默認也可以輸出中文
asiic:8位 == 1個字節 ,表示一個字符
萬國碼:unicode 把所有國家的語言包含進去
unicode升級:
utf-8:最少用8位表示一個字節
單位的轉化:
8bit 1bytes
1024bytes == 1kb
1024kb == 1mb
1024mb == 1Gb
1024Gb == 1Tb
4、變量
把程序運行的中間結果臨時的存在內存裏,以便後續的代碼調用
聲明變量
1 #!/usr/bin/env python 2 3 name = "Tom"
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"Tom"
變量定義的規則:
變量名只能是 字母、數字或下劃線的任意組合
變量名的第一個字符不能是數字
以下關鍵字不能聲明為變量名
[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
變量的定義要具有可描述性。
5、常量
常量就是指不變的量,比如π:3.1415826....;在Python中沒有一個專門的語法代表常量,程序員約定俗成用變量名全部大寫代表常量:AGE = 18
6、用戶交互
1 #!/usr/bin/env python
2
3 # 將用戶輸入的內容賦值給 name 變量
4 name = input("請輸入用戶名:")
5
6 print (name)# 打印輸入的內容
python2中有raw_input()和input()兩種方式,第一種輸出結果類型是str,第二種輸出結果是int;python3中只有input()類型,輸出結果類型是str
7、格式化輸出
1 方法一:
2 name = input(‘請輸入用戶名:‘)
3 age = input(‘請輸入年紀:‘)
4 job = input(‘請輸入工作:‘)
5 Hobbie = input(‘請輸入愛好:‘)
6
7 msg1 = ‘‘‘ ------------ info of %s -----------
8 Name : %s
9 Age : %d
10 job : %s
11 Hobbie: %s
12 ------------- end -----------------
13 ‘‘‘ % (name,name,int(age),job,Hobbie)
14 print(msg1)
15
16 方法二:
17 dic = {‘name‘:‘leige‘,‘age‘:‘20‘,‘job‘:‘IT‘,‘Hobbie‘:‘wu‘}
18 dic = {‘name‘:name,‘age‘:age,‘job‘:job,‘Hobbie‘:Hobbie}
19
20 msg2 = ‘‘‘ ------------ info of %(name)s -----------
21 Name : %(name)s
22 Age : %(age)s
23 job : %(job)s
24 Hobbie: %(Hobbie)s
25 ------------- end -----------------
26 ‘‘‘ % dic
27 print(msg2)
28 print(‘你的年齡%s ,你的名字%s,學習進度5%%‘% (age,name)) #如果輸出結果中含有%號,需要再使用一個%進行轉義
8、if、while簡單使用
1 #求1-100以內數字相加的和
2 #方法一:
3 i = 1
4 count = 0
5 while True:
6 if i <= 100:
7 print(i)
8 i += 1
9 else:
10 break
11
12 #方法二:
13 while i <= 100:
14 count += i
15 i += 1
16 print(count)
python學習 day1