一、Python安裝
以python3.6為例,python2版本的安裝方式與python3類似
1.1 windows下安裝
1 1 .下載安裝包 2 https://www.python.org/downloads/ 3 2 .執行可執行程序,直接下一步即可: 4 默認安裝路徑:C:\python36 5 3 .配置環境變量(如果在安裝時勾選配置環境變量,此步驟則不需要了) 6 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到變量名為Path的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 7 如:原來的值;C:\python36,切記前面有分號
1.2 windows下更新python
卸載重裝即可
1.3 linux下安裝python
1 linux中默認自帶的python,以最新的ubuntu18.04的系統為例,默認自帶的Python版本為python2.7 ,可以再次安裝python3的版本,通過命令: 2 # 安裝python3 3 sudo apt- get install python3 4 # 安裝pip3 5 sudo apt-get install python3-pip
?
二、初識python
2.1 第一個Python程序
? ?在linux下的/home/目錄下創建文件hello.py
# 打印hello world print ( " hello world " )
執行文件:
python3 hello.py
輸出:hello world
上一步中執行 python3 hello.py時,明確的指出 hello.py 腳本由python3解釋器來執行。
如果想要類似于執行shell腳本一樣執行python腳本,例: ./hello.py ,那么就需要在 hello.py 文件的頭部指定解釋器
1 # !/usr/bin/env python3 2 3 print ( " hello world " )
如此一來,執行./hello.py文件即可
ps:如果在執行的時候報沒有權限的錯誤,請記得給文件進行賦權,chmod 775 hello.py
程序除了可以寫在文件中,還可以使用Python自帶的交互解釋器執行:
1 Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32 2 Type " help " , " copyright " , " credits " or " license " for more information. 3 >>> print ( " hello world " ) 4 hello world 5 >>>
2.2 Python的注釋
1 單行注釋:以 # 開頭,# 右邊的所有東西都被當做說明文字,而不是真正要執行的程序,只起到輔助說明作用 2 3 # 這是一個單行注釋 4 5 為了保證代碼的可讀性, # 后面建議先添加一個空格,然后再編寫相應的說明文字 6 7 8 # ############################## 9 多行注釋: 10 如果希望編寫的 注釋信息很多,一行無法顯示,就可以使用多行注釋 11 要在 Python 程序中使用多行注釋,可以用 一對 連續的 三個 引號(單引號和雙引號都可以) 12 13 """ 14 這是一個多行注釋 15 """
什么時候需要使用注釋:
- 注釋不是越多越好,對于一目了然的代碼,可以不用添加注釋
- 對于復雜的操作,應該在操作開始前寫上若干行注釋
- 對于不是一目了然的代碼,應在其行尾添加注釋(為了提高可讀性,注釋應該至少離開代碼 2 個空格)
- 絕不要描述代碼,假設閱讀代碼的人比你更懂 Python,他只是不知道你的代碼要做什么
2.3 PEP8規范
- Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文檔
- 其中第 8 篇文檔專門針對 Python 的代碼格式 給出了建議,也就是俗稱的 PEP 8
- 文檔地址:https://www.python.org/dev/peps/pep-0008/
- 谷歌有對應的中文文檔:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
三、編碼
python2中默認編碼為ASCII,而python3中的默認編碼為Unicode,如果使用的解釋器是python2的話,并且代碼中含有中文的話,那么需要在文件的開頭加上:
1 在文件開頭加入: # _*_coding:utf-8_*_ 2 或者: # coding=utf-8
python解釋器在加載.py文件時,會對文件進行編碼(python2則用ascii編碼,python3則用unicode編碼)
?
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
四、執行腳本傳入參數
Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:
- Python內部提供的模塊
- 業內開源的模塊
- 程序員自己開發的模塊
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行python腳本時傳入的參數
1 # !/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import sys 5 print sys.argv
五、變量
5.1 變量的定義
1 # !/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 name = " zhangsan "
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"zhangsan"
變量的作用:昵稱,其代指內存里某個地址中保存的內容
5.2 變量的命名規則
- 標示符可以由 字母、下劃線 和 數字 組成
- 不能以數字開頭
- 不能與關鍵字重名
python的關鍵字有:['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']
ps:Python中的變量名是區分大小寫的, and和And不是一個變量
5.3 變量的命名規范
- 每個單詞都使用小寫字母
-
多個單詞之間使用
_下劃線,例如:
- first_name,last_name等
?
?
六、用戶的輸入
1 # !/usr/bin/env python 2 # -*-coding:utf-8-*- 3 4 """ 5 @author:fyh 6 @time:2019/6/6 7 """ 8 9 name = input( " 請輸入用戶的姓名: " ) 10 age = input( " 請輸入用戶的年齡: " ) 11 12 # 打印用戶的姓名和年齡 13 print (name) 14 print (age)
七、.pyc是啥
?7.1 Python是一門解釋型語言?
我初學Python時,聽到的關于Python的第一句話就是,Python是一門解釋型語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。如果是解釋型語言,那么生成的*.pyc文件是什么呢?c應該是compiled的縮寫才對啊!
為了防止其他學習Python的人也被這句話誤解,那么我們就在文中來澄清下這個問題,并且把一些基礎概念給理清。
7.2 解釋型語言和編譯型語言
計算機是不能夠識別高級語言的,所以當我們運行一個高級語言程序的時候,就需要一個“翻譯機”來從事把高級語言轉變成計算機能讀懂的機器語言的過程。這個過程分成兩類,第一種是編譯,第二種是解釋。
編譯型語言在程序執行之前,先會通過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。
解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然后直接運行,最典型的例子是Ruby。
通過以上的例子,我們可以來總結一下解釋型語言和編譯型語言的優缺點,因為編譯型語言在程序運行之前就已經對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。但是我們也不能一概而論,一些解釋型語言也可以通過解釋器的優化來在對程序做出翻譯時對整個程序做出優化,從而在效率上超過編譯型語言。
此外,隨著Java等基于虛擬機的語言的興起,我們又不能把語言純粹地分成解釋型和編譯型這兩種。
用Java來舉例,Java首先是通過編譯器編譯成字節碼文件,然后在運行時通過解釋器給解釋成機器文件。所以我們說Java是一種先編譯后解釋的語言。
7.3 Python到底是什么
其實Python和Java/C#一樣,也是一門基于虛擬機的語言,我們先來從表面上簡單地了解一下Python程序的運行過程吧。
當我們在命令行中輸入python hello.py時,其實是激活了Python的“解釋器”,告訴“解釋器”:你要開始工作了。可是在“解釋”之前,其實執行的第一項工作和Java一樣,是編譯。
熟悉Java的同學可以想一下我們在命令行中如何執行一個Java的程序:
javac hello.java
java hello
只是我們在用Eclipse之類的IDE時,將這兩步給融合成了一步而已。其實Python也一樣,當我們執行python hello.py時,他也一樣執行了這么一個過程,所以我們應該這樣來描述Python,Python是一門先編譯后解釋的語言。
7.4 簡述Python的運行過程
在說這個問題之前,我們先來說兩個概念,PyCodeObject和pyc文件。
我們在硬盤上看到的pyc自然不必多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。我們先簡單知道就可以了,繼續向下看。
當python程序運行時,編譯的結果則是保存在位于內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。
所以我們應該這樣來定位PyCodeObject和pyc文件,我們說pyc文件其實是PyCodeObject的一種持久化保存方式。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
