<Python基礎了解>第一天
編程分為兩大類:
面向對象:
以指令為中心,由指令處理數據.
如何組織代碼解決問題.
面向過程:
以數據為中心,所有的處理代碼都圍繞數據展開.
如何設計數據結構組織數據,並提供對此類數據所允許處理操作.
platform 平臺:
>>> import platform
>>> print platform.uname()
(‘Linux‘, ‘web2‘, ‘2.6.32-431.el6.x86_64‘, ‘#1 SMP Fri Nov 22 03:15:09 UTC 2013‘, ‘x86_64‘, ‘x86_64‘)
dir 顯示模塊的內置函數.
>>> dir(platform)
[‘__builtins__‘, ‘__copyright__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘__version__‘, ‘_abspath‘, ‘_architecture_split‘, ‘_bcd2str‘, ‘_default_architecture‘, ‘_dist_try_harder‘, ‘_follow_symlinks‘, ‘_ironpython_sys_version_parser‘, ‘_java_getprop‘, ‘_jython_sys_version_parser‘, ‘_libc_search‘, ‘_lsb_release_version‘, ‘_mac_ver_gestalt‘, ‘_mac_ver_lookup‘, ‘_mac_ver_xml‘, ‘_node‘, ‘_norm_version‘, ‘_parse_release_file‘, ‘_platform‘, ‘_platform_cache‘, ‘_popen‘, ‘_release_filename‘, ‘_release_version‘, ‘_supported_dists‘, ‘_sys_version‘, ‘_sys_version_cache‘, ‘_sys_version_parser‘, ‘_syscmd_file‘, ‘_syscmd_uname‘, ‘_syscmd_ver‘, ‘_test_parse_release_file‘, ‘_test_sys_version‘, ‘_uname_cache‘, ‘_ver_output‘, ‘_win32_getvalue‘, ‘architecture‘, ‘dist‘, ‘java_ver‘, ‘libc_ver‘, ‘linux_distribution‘, ‘mac_ver‘, ‘machine‘, ‘node‘, ‘os‘, ‘platform‘, ‘popen‘, ‘processor‘, ‘python_branch‘, ‘python_build‘, ‘python_compiler‘, ‘python_implementation‘, ‘python_revision‘, ‘python_version‘, ‘python_version_tuple‘, ‘re‘, ‘release‘, ‘string‘, ‘sys‘, ‘system‘, ‘system_alias‘, ‘uname‘, ‘version‘, ‘win32_ver‘]
id()打印變量內存空間位置:
>>> num=2 >>> id(num) 28369696 >>> num=3 >>> id(num) 28369672
type 查看變量類型:
>>> num=3 >>> id(num) 28369672 >>> type(num) <type ‘int‘> >>> name="tom" >>> type(name) <type ‘str‘>
對象引用(變量)
內建函數type()用於返回給定數據項的數據類型
"=" 用於將變量名與內存中的某對象綁定:如果對象事先存在,就直接進行綁定;否則,則由"="創建引用對象.
>>> id(name) 139896314219616 >>> test="tom" >>> id(test) 139896314219616
變量命名規則
1、只能包含字母、數字和下劃線,且不能以數字開頭
2、區分字母大小寫
3、禁止使用保留字
命令管理
1、以單一下劃線開頭變量名(_X)不會被from module import *語句導入
2、前後有下劃線的變量名(_x_)是系統定義的變量名,對python解釋器有特殊意義
3、以兩個下劃線開頭但結尾沒有下劃線的變量名(__x)是類的本地變量
4、交互模式下,變量名"_"用於保存最後表達式結果.
>>> 1+1 2 >>> print _ 2
註意:變量名沒有類型,對象才有
例如:name = "tom" name = 3.14 name是變量名,沒有類型,有類型的是它引用的對象("tom",3.14)
組合數據類型:
Python常用的組合數據類型:
序列類型:
列表:使用[]創建,如[‘call‘,‘me‘,‘install‘]
元組:使用()創建,如(‘one‘,‘two‘)
字符串也屬於序列類型
列表是可變對象,支持原處修改.
>>> a1 = [‘this‘,‘is‘,‘a‘,‘pig‘] >>> a1[0] ‘this‘ >>> a1[0][0] ‘t‘
列表是可變對象:在原有的可以直接修改內存中的值.
>>> id(a1) 139896212570264 >>> a1[3]="apple" >>> print a1 [‘this‘, ‘is‘, ‘a‘, ‘apple‘] >>> id(a1) 139896212570264
元組是不可變對象:
>>> b1=("this","is") >>> b1[1] ‘is‘ >>> b1[1]="a" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ‘tuple‘ object does not support item assignment
字符串切片:最後一個單位不被顯示.
>>> name = "herry" >>> name[0:1] ‘h‘ >>> name[0:2] ‘he‘ >>> name[:2] ‘he‘ >>> name[2:] ‘rry‘ >>> name="jerry" >>> name[:4:2]從0開始可以不寫,到第4個值,步進為2,每次跳過兩個值 ‘jr‘
實質上列表和元組並不直接存儲數據,而是存放對象引用.
變量的長度可以使用len()測量:
>>> name = "herry" >>> len(name) 5
Python的4種邏輯操作符
身份操作符:
is:判斷左端對象引用是否相同於右端對象引用;也可以與none進行;
>>> type(name) is type(test)True >>> name="TOm" >>> test="jerry" >>> name is test False
比較操作符:
< > <= >= != ==
成員操作符:
in或not in,測試成員關系
邏輯運算符:
and、or、not
Python常見的控制流語句:
if
while
for...in...
try
Python提供了完整的算數操作集
很多的python數據類型也可以使用增強的賦值操作符,如+=、-==等;
同樣的功能,使用增強型賦值操作符性能比較好。
Python的int類型時不可變的,因此,增強型賦值的實際過程時創建了一個新的對象來存儲結果後將變量名執行了重新綁定.
Python的輸入/輸出
輸出:
Python3:print()
Python2:print語句
輸入:
input()
raw_input()
>>> raw_input("please input a num:") please input a num:1 ‘1‘
print接受一個逗號分割的對象列表,並為行尾自動添加一個換行符,如果不需要,則在最後一個元素後添加逗號.
>>> a=1 >>> b=2 >>> v=3 >>> print a,b,v 1 2 3
數據類型轉換:
>>> name="jerry" >>> print "the name is %s" % name the name is jerry >>>
類型轉換方法:
>>> name="tom" >>> name.upper() ‘TOM‘
輸入/輸出修飾符
下面標誌中的一個或多個
-:表示左對齊
+:表示包含數字符號,正數也會帶
0:表示一個零填充.
一個指定最小寬度的數字
一個小數點,用於按照精度分割字段的寬度
一個數字,指定要打印字符串中的最大字符個數,浮點數中小數點之後的哪個位數,或者證書的最小位數.
字典就是鍵值對的集合
>>> al={‘a‘:21,‘b‘:32} >>> al["a"] 21
字符串的引用是要加""號的,但是數字的引用時不需要的.
>>> a1={1:21,2:32} >>> a1[1] 21
函數的創建與調用
Python使用def語句定義函數
函數可以參數化,通過傳遞不同的參數來調用
每個Python函數都有一個返回值,默認為None,也可以使用"return value"明確定義返回值
def語句會創建一個函數對象,並同時創建一個指向函數的對象引用
函數也是對象,可以存儲在組合數據類型中,也可以作為參數傳遞給其他函數
callable()可用於測試函數是否可調用.
定義函數printName,傳入參數name,主要做打印name參數;
def printName(name): print name
使用printName函數.由於lisi是字符串,所以要加上引號.
printName("lisi")
由於test時變量,所以不需要加引號.
def printName(name): print name test="tom" printName(test)
callable測試一個內存對象是否可被調用.
>>> def printName(name): ... print name ... >>> callable(printName) True
python有眾多內置函數,可以使用查看.
>>> dir(__builtins__)
查看幫助help(range),step步進值.
range(...) range([start,] stop[, step])
生成序列:
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
最後一位默認不顯示,顯示到前一位.
>>> range(1,10) [1, 2, 3, 4, 5, 6, 7, 8, 9]
生成隨機數的:
>>> import random >>> random.random() 0.056007492238391188
random.choisc 從列表中隨機選擇一個:
import random s=[‘a‘,‘b‘,‘c‘,‘d‘] t=random.choice(s) print t
註釋:
#: 可以從一行的任何地方開始
續行:
\:
‘‘‘:閉合操作符,單一語句跨多行
;做行分隔符,同一行放置多個語句.
python標示符:
第一個字符只能使用字母或者下劃線
余下的字符可以使用字母、數字、下劃線
區分字符大小寫
python基本變成風格
註釋
既不能缺少註釋,亦要避免過多註釋
文檔
python允許通過_doc_動態獲取得文檔字串
縮進
統一縮進4個字串
標示符名稱:
見名知義
python命名管理:
1、以單一下劃線開頭的變量名不會被from module import * 語句導入
2、前後有下劃線的變量名(_x_)是系統變量名,對解釋器有特殊意義
3、以兩個下劃線開頭、但結尾沒有下劃線的變量名(__x)是類的本地變量.
主程序:
無論當前模塊是被別的模塊導入還是直接執行,都會執行這部分代碼.
註意:所有的模塊都有能力執行代碼
最高級別的python語句(沒有縮進的)在模塊被導入時就會執行,無論是否真的需要執行.
妥當的做法:除了那些真正需要執行的代碼以外,所有的功能代碼都通過函數建立.
僅在主程序模塊中編寫大量的頂級可執行代碼.
用於被導入的模塊只應該存在較少的頂級執行代碼.
__name__指示模塊應該如何被加載:
如果模塊時被導入的,__name__的值時模塊的名字.
如果模塊時直接執行,__name__的值時‘__main__‘.
本文出自 “螞蟻” 博客,請務必保留此出處http://215687833.blog.51cto.com/6724358/1958509
<Python基礎了解>第一天