python屬於解釋型語言。根據python的書寫順序來介紹,python作爲一個腳本語言可以直接通過支持python環境的terminal通過命令進入python編譯環境,也可以通過編寫後綴爲.py的py執行文件(後綴並非一定,也可沒有後綴)實現編譯運行。
python基礎語法分如下幾個部分介紹:python文件結構,python註釋,python關鍵字,python變量等。
python文件結構
和一般的語言類似,python文件也被區分成幾個較爲明顯的部分,每個部分都負責自己需要做的工作,從而達到完美編譯運行python文件的目的。簡單區分可以將python分爲如下三個部分:
- Executable Python Scripts 和 magic comment
可執行的腳本(Executable Python Scripts),主要是使用在類BSD的Unix系統中,爲了讓python腳本可以直接運行而非通過python命令制定文件運行(如同shell腳本一樣直接運行),需要添加一行聲明註釋,並將py文件添加可執行權限(x),即可直接運行該py文件,其聲明如下(該行存在的話一般位於py首行):
#!/usr/bin/env python
魔法註釋(magic comment),主要是用於對python文件的源碼進行編譯的編碼設置,默認採用的ASCII編碼,若需要聲明成utf-8或其他類型編碼則需要添加此註釋。基本格式如下:
# -*- coding: utf-8 -*-
該行在如上對py的聲明不存在時放在首行,否則一般放在第二行.一般完整的寫法如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
- 導入模塊
對於py來說,我們需要使用系統或者三方的某些功能的話,就需要讓其功能模塊和該py文件建立聯繫或者說是一個簡易的依賴引用的關係。和其他語言類型,python可以使用import關鍵字引入需要使用的模塊,同時可以通過”,”將多個模塊同時導入。除此之外,python還可以通過from關鍵字導入模塊的部分數據(變量,方法等).
需要注意的是使用import導入的部分需要通過導入的模塊名應用獲取數據,而通過from導入的數據可以直接如同在模塊內部使用一樣直接調用,如下示例:
#import導入格式
import sys #導入單個模塊
import sys,math,cmath #導入多個模塊
#from導入格式
import sys import * #導入所有的數據
import sys import path #導入sys中的變量path
#import 導入的使用
import math
if __name__ =="":
number=45.67
print "number去除小數:",math.floor(number)
#from 導入使用
from math import floor
if __name__ =="":
number=45.67
print "number去除小數:",floor(number)
如上,“#”爲python 中註釋開始符號,稍後會詳細介紹.使用from導入模塊時需要特別注意避免重複的問題。
- 代碼部分
代碼部分放在如上兩個部分的底部,python代碼的格式是高度的敏感代碼的格式的,通過空格來對代碼的層次進行劃分,通過代碼的縮排來區分代碼塊。一般的對於執行一個py文件,代碼通過順序執行代碼,一般的我們可以通過判斷python的自有變量“name”來判斷該py當前的運行環境是屬於主程序運行還是輸入導入的模塊(主程序運行的話該變量值爲固定”main“,若是導入的模塊的話,其值爲該模塊的名字),如:
#!/usr/bin/env python
# -*-encoding:utf-8 -*-
import sys
def main():
pass
if __name__ == '__main__':
main() #通過這裏控制模塊的測試代碼.
Python註釋和標準輸入輸出
python中的註釋通過”#”實現,python中以“#”號開頭的右邊的所有的內容都會被忽略,於代碼的運行不產生任何影響。如下:
name="hfcai" #用戶名
python中的標準輸入輸出有多種方式,python的輸出可以分爲三種種方式:一個是標準化的通過print打印輸出,也可以是一個表達式返回輸入,或者通過文本寫入的方式輸入.
比較簡單的是表達式返回輸出和print語句(也可以理解爲方法)打印輸入。但有所不同的是,表達式返回輸入一般存在於python執行環境,而print打印輸出輸入標準的輸出接口返回,比較明顯的是,表達式類型的輸出只有我們通過控制檯進入python環境纔會輸出,而單獨運行python文件並不會產生輸出內容.如下:
#表達式輸出
hfcai@ubuntu:~/Desktop$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "test"
'test'
>>>
#print輸出
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
print "test"
#執行
hfcai@ubuntu:~/Desktop$python test.py
test
python 的輸入方式有很多中,常見的有通過系統的輸入函數提示人工輸入類似於C中的scanf函數,還有通過運行py文件附帶參數輸入,讀取文件等方式,如下介紹系統輸入函數。使用如下:
#input輸入
age=input("How old are you ?")
print "your are %s years old." % age
#結果
How old are you ?12
your are 12 years old.
How old are you ?12*2
your are 24 years old.
How old are you ?"abc"
your are abc years old.
How old are you ?abc
Traceback (most recent call last):
File "/home/hfcai/Projects/PythonProjects/pythonNotes/exercises/basics/basics_struct.md.py", line 13, in <module>
age = input("How old are you ?")
File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
Process finished with exit code 1
#raw_input輸入
raw_str=raw_input("get raw_input:")
print raw_str
#結果
get raw_input:23+76
23+76
get raw_input:abc
abc
如上,可以看出,raw_input將輸入內容看成string,返回輸入所有內容,input將輸入內容識別爲表達式,當輸入字符串的話則需要輸入字符串的定義。
Python 變量
python中可以簡單的將基本變量類型非爲數字類型(包括int,float等)和字符串類型,python中對於變量的賦值較爲簡單,並不需要申明變量的類型,python會自動識別,變量賦值語句如下:
param=1
param1=1.9
param2="character."
- 數字
python中支持浮點型數據,整數和浮點型數據的計算會被轉換爲浮點型
>>> print 1.2*2
2.4
- 字符串
python 中的字符串可以通過單引號’test’,雙引號“test”,或者三對單引號或三對雙引號跨行表示。
a='Traceback a'
b="hacker"
c='''
name:hfcai
sex:man
age:25
'''
python 關鍵字
python關鍵字可以通過導入python中的keyword模塊查看,如下:
import keyword
print keyword.kwlist
#結果
['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']
列表、元組、字典
list,tupple,dict這是python中較爲常見的數據集合,每種的使用場景有差異不同
- list(列表)
列表是一組有序項目的集合。可變的數據類型,以方括號“[]”表示的數據集合,不同成員以“,”分隔。列表中可以包含任何數據類型(包括列表等數據類型)。如下:
list = ['testa', 'bbb', 123433, 40.6]
a = ['test', 'a', 999]
print list
list[3] = 3
a.append("bb") #追加一個變量
a.pop() #移除地一個變量
a.count("a") #統計變量出現的次數
list.extend(a) #追加列表
print list[2:3] # 分片操作
index=list.index(a) #檢索位置
a.insert(2,12) #向‘2’位置添加一個參數12
print list + a
print list * 2
- tupple(元組)
元組是由一組有序不可變集合。以“()”表示的數據集合,其餘特性基本與列表一致。
#tupple
tuple = ('tupple top',123,23.45,'tupple end')
t2 = (123.4,45,'tt',109)
print tuple
print t2
print tuple[:4]
#tuple[3]=3 //該操作無效,元組不允許修改更新
print tuple * 2
print tuple+t2
- dict(字典)
Dictionary無序(類似與Java中的map,通過key-value方式存儲),格式通過{key:value,….}賦值。和json數據格式很相像.
#dictionary
dict = {'key1':'value1','key2':23,2:"gg"}
print dict
#print dict[0] //這種操作是不合法的
print dict[2]
print dict.keys()
print dict.values()
dict2=dict.copy()
print dict2
編碼風格
每個語言都有自己的編碼風格,爲了方便理解,爲了統一格式,python的編碼風格,官網給了一個標準的編碼風格指南PEP 8,如下文python文檔中給出的一些指導性的建議:
使用4空格(space)縮進,不使用製表符(Tab鍵)
儘量保證每行的字符數目不超過79個,有助於閱讀
使用空行分離各個部分代碼塊(類和函數等)
註釋儘量單獨一行
添加文檔描述,文檔註解
運算符和符號左右用空格分離
保持名和函數的命名一致:通常是使用駝峯命名法命名類,使用下劃線小寫字母命名函數和方法。始終使用self作爲方法的第一個參數的名稱