1. 程式人生 > >python學習 day1

python學習 day1

環境 測試 IT 面向對象編程 編譯型 可用 有一個 java ruby

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