国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python基礎入門詳解(文件輸入/輸出 內建類型 字典操作使用方法)

2019-11-25 18:35:56
字體:
來源:轉載
供稿:網友

一、變量和表達式

復制代碼 代碼如下:

>>> 1 + 1              
2
>>> print 'hello world'
hello world
>>> x = 1              
>>> y = 2
>>> x + y
3

Python是強類型語言,無法根據上下文自動解析轉換成合適的類型。 Python是一種動態語言,在程序運行過程中,同一個變量名在運行的不同階段可以代表不同形式的值(整型,浮點,列表,元組),變量名只是各種數據及對象的引用。C語言中的變量名是用來存放結果的內存片段。

1、在Python中是通過對象的引用而不是值來賦值給變量的。

2、賦值操作符主要是"=",同時也可使用增量賦值,如 x+=1。但是沒有自增、自減操作符。

3、在C語言中,賦值語句可以當作表達式(可以返回值),但是在Python中賦值語句不會返回值,如下面的就是非法的:

復制代碼 代碼如下:

>>> x=1
>>> y=(x=x+1)

SyntaxError: invalid syntax
以 #! 開頭的稱為組織行,這行告訴你的Linux/Unix系統當你執行你的程序的時候,它應該運行哪個解釋器。例如:#!/usr/bin/python

以 # 開頭的稱為注釋行。

二、條件語句

控制流語句:通過使用or,and,not關鍵字可以建立任意的條件表達式

if-elif-else:(Python 沒有 switch-case 語句,可以通過 if 語句配合字典完成同樣的工作)

復制代碼 代碼如下:

if something == 1:   
    doSomething1()
elif something == 2:   
    doSomething2()
else:   
    pass # 表示一個空的塊或者是空的主體,使用pass語句
while-else:
while something:   
    doSomething1()
else:   
    doSomething2()
for-else:
for i in range(1, 10, 2):   # i 值從 1 到 10,步長為2
    print i
else:
    print 'The for loop is over'

break 和 continue:用于中斷和繼續循環。

三、文件的輸入/輸出

復制代碼 代碼如下:

f=open("foo.txt")
line=f.readline()
while line:
    print line,
    line=f.readline()  #讀取一行,包括換行符'/n',讀到文件末尾,返回空字符串
f.close()

f=open("out.txt","w")
year=1
money=1000
while year<=5:
    money=money*(1+0.05)
    f.write("%3d %0.2f/n" % (year,money)) # print>>f,"%3d %0.2f" % (year,money)
    year+=1
f.close()

for line in f.xreadlines():
    # Do something with line

四、內建類型

4.1 None類型

None表示空對象。如果一個函數沒有顯示的返回一個值,None就被返回。None的bool值為false

4.2 數值類型

Python有4種數值類型:整數、長整數、浮點數和復數。所有數值類型都是不可變類型。

python不支持自增自減操作符++,--,++i,其實是+(+i)的意思

運算符與表達式:基本上與其它語言相類似,只是有以下幾點不同:

x*y:乘法。2 * 3得到6。'la' * 3得到'lalala'。
x**y:冪運算,返回 x 的 y 次冪。
x/y:x 除以 y,4/3得到1(整數的除法得到整數結果)。4.0/3或4/3.0得到1.3333333333333333。
x//y:取整除。返回商的整數部分。4 // 3.0得到1.0。
除法//:地板除在任何時候都會將小數部分舍為0
-x  改變x的符號位

4.3 字符串
字符串:單引號(‘)和雙引號(")的作用相同,只能創建單行字符串。轉義符是(/)。

三引號(如:'''或者""")之間的一切都是字符串的內容。

自然字符串:在字符串前加R(或r)指示某些不需要如轉義符那樣的特別處理的字符串,如:print R“Hello/n World”,將直接輸出“Hello/n World”而不會出現換行的情況。

復制代碼 代碼如下:

a="hello world"
b=a[0,5]            # b="hello"
c=a+" I love you"   # c="hello world I love you"
s="The value of x is "+ str(x)

獲得子串: s[i:j],返回 s 從i到j(不包括j)之間的子串。若i省略則i=0,若j省略則j=len(s)-1

str() repr() 函數或者向后的引號(`)可以將其他類型的數據轉換為字符串。

Unicode字符串:在字符串前加U(或u)。如 a=u'hello',每個字符用16位來表示 "hello" 'world'會被自動連接為一個字符串"helloworld" ,"s1" u"s2"就會產生u"s1s2"

字符串、Unicode字符串及tuple是不可變的序列。

4.4 列表和元組(list & tuple)

列表和元組是任意對象的序列,支持的常用操作:

復制代碼 代碼如下:

len()
append()
insert(index,aMember)
list[index]=aNewMember

一個元素的元組:a=(12,)  #注意一定要個額外的逗號!
對于tuple中的元素,不可以修改,也不可以添加
列表是可變的序列,允許插入,刪除,替換元素等操作

可變序列支持的操作:

復制代碼 代碼如下:

s[i]=v
s[i:j]=t    # t要是個序列
del s[i]
del s[i:j]

4.5 字典

字典就是一個關聯數組(或稱為哈希表),是一個通過關鍵字索引的對象集合。

使用{}來創建一個字典

復制代碼 代碼如下:

a={
    "username":"loo"
    "home":"/home/loo"
    "uid":500
  }
u=a["username"]            #訪問
a["username"]="lu"         #修改
a["shell"]="/usr/bin/tcsh" #添加
del a["shell"]             #刪除
len(a)                     #元素個數
a[("loo",123)]="abc"

字典的key是不能修改的對象(比如數字和tuple)。

五、循環

復制代碼 代碼如下:

for i in range(1,5):
    print "2 to the %d power is %d" % (i,2**i)

內建函數range([i,]j[,stride])建立一個列表,參數i和參數stride是可選的,默認分別為0和1。

復制代碼 代碼如下:

a=range(5,1,-1)   # a=[5,4,3,2]
s="hello world"
for c in s:       # 打印每個字符  
    print c

range()函數在內存中建立一個列表,當需要一個很大的列表時候,這個占內存且耗時間,為了克服這個缺點,python提供了xrange()。xrange()函數只在需要的時候才臨時計算提供值,大大節省了內存。

六、函數

def say(message, times = 1):  # time 的默認參數值是 1
    print message * times   
    return time               # 無返回值的函數可省掉 return,等同于return None
只有在形參表末尾的那些參數可以有默認參數值,即你不能在聲明函數形參的時候,先聲明有默認值的形參而后聲明沒有默認值的形參。這是因為賦給形參的值是根據位置而賦值的。例如,def func(a, b=5)是有效的,

但是def func(a=5, b)是無效的。

global a  # 獲得全局變量a

用戶自定義函數:

復制代碼 代碼如下:

def foo(x,y):
    print '%s+%s is %s' % (str(x),str(y),str(x+y))
bar=foo
bar(3,4)
d={}
d['callback']=foo
d['callback'](3,4)     # 調用foo

用戶自定義函數有如下屬性:

f.__module__                        #函數所在的模塊名
f.__doc__ 或者 f.func_doc       #文檔字符串
f.__name__ 或者 f.func_name #函數名
f.__dict__ 或者 f.func_dict      #支持任意函數屬性的函數名字空間
f.func_code                          #編譯后產生的字節碼
f.func_defaults                     #包含所有默認參數的元組
f.func_globals                      #函數所在的模塊的全局名稱空間的字典
f.func_closure                     #None or a tuple of cells that contain bindings for the function's free variables.

七、類

復制代碼 代碼如下:

class Stack(object):
    def __init__(self):
        self.stack=[]
    def push(self,object):
        self.stack.append(object)
    def pop(self):
        return self.stack.pop()
    def length(self):
        return len(self.stack)
s=Stack()
s.push("Dave")
s.push(42)
s.push([3,4,5])
print s.length()
print s.pop()
y=s.pop()
print y
del s

類方法的定義:

復制代碼 代碼如下:

# 靜態方法:
class AClass(object):
    @staticmethod
    def astatic():
            print 'a static method'
# 類方法:
class ABase(object):
    @classmethod
    def aclassmethod(cls):

isinstance(s,C) 用于測試s是否是C或是C的子類的實例
issubclass(A,B) 用于測試A是否是B的子類

八、異常

用try和except語句來捕獲異常:

復制代碼 代碼如下:

try:
    f=open("file.txt","r")
except IOError,e:
    print e
except TypeError,e:
    print e
...
try:
    do something
except:
    print 'An error occurred'

如果有IOError異常,就將錯誤原因放置在對象e中,然后運行except代碼塊,如果發生其他類型的異常就將控制權轉到處理該異常的except的代碼塊,如果沒找到該代碼塊,程序將終止運行,若沒有發生異常,except代
碼會被忽略掉。

九、模塊

import 模塊名
import 模塊名 as 別名
from 模塊 import 對象(函數)
from 模塊 import *
內建函數dir()可以列出一個模塊中的所有可訪問的內容
可以被import導入的模塊:
1.使用python寫的程序(.py程序)
2.C或C++擴展(已編譯的共享庫或DLL)
3.包(包含多個模塊)
4.內建模塊(使用C寫的并已鏈接到python解釋器內)

十、引用與副本(引用計數)

python中的一切數據都是對象。
對于可變對象,改變一個引用就等于改變了該對象的所有的引用:

復制代碼 代碼如下:

a=[1,2,3,4]
b=a
b[2]=100
print a   # a=[1,2,100,4]

為了避免這種情況,你需要創建一個可變對象的副本,然后對該副本進行操作。

兩種創建可變對象的副本:

(1)淺拷貝(shallow copy):創建一個新對象,但它包含的子元素仍然是原來對象子元素的引用:

復制代碼 代碼如下:

b=[1,2,[3,4]]
a=b[:]
a.append(100)
print b       # b=[1,2,[3,4]] b沒有變
a[0]=100
print b       # b=[1,2,[3,4]] b沒有變
a[2][0]=100
print b       # b=[1,2,[100,4]] b被改變了

(2)深拷貝(deep copy)

復制代碼 代碼如下:

import copy
b=[1,2,[3,4]]
a=copy.deepcopy(b)

__del__()在對象銷毀時調用。 del x 只是減少對象x的引用計數,并不調用這個函數。

十一、類型轉換

復制代碼 代碼如下:

int(x[,base])   #轉換為int
long(x[,base])
float(x)
tuple(x)
list(x)
chr(x)        #轉換為字符
unichr(x)     #轉換為Unicode字符
ord(x)        #字符轉換為整數值  
str(x)
a=[1,2,3,4]
s=repr(a)   # s='[1,2,3,4]'  也可以使用 s='a'
b=eval(s)   # b=[1,2,3,4]    再轉換成一個列表
eval('3+4')
f=open("foo")
a=repr(f)  # a="<open file 'foo',mode 'r' at dc030>"

十二、其他

文檔字符串DocStrings: 如果一個模塊、類、函數體的第一個語句是未命名的字符串,改字符串就自動成為該對象的文檔字符串 說白了就是類似于JavaDoc的東西。

文檔字符串的慣例是一個多行字符串,它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述。可以使用__doc__(注意雙下劃線)調用函數的文檔字符串屬性(屬于函數的名稱)。Python把每一樣東西都作為對象,包括這個函數。

Python中的help(),它所做的只是抓取函數的__doc__屬性,然后整潔地展示給你。

自動化工具也可以以同樣的方式從你的程序中提取文檔。隨Python發行版附帶的pydoc命令,與help()類似地使用DocStrings。

復制代碼 代碼如下:

def printMax(x, y):
    '''Prints the maximum of two numbers.''' # 這里是文檔字符串
    print "DocStrings"                       # 這里是函數體命令行參數
>>>print printMax.__doc__
Prints the maximum of two numbers.

id(a)可以查看該對象的標識(當前的實現是該對象在內存中的位置)

復制代碼 代碼如下:

if type(a) is type(b):
    print 'a and b have the same type'
if type(a) is types.ListType
    print 'Is a list'

isinstance(s,C) 用于測試s是否是C或是C的子類的實例

復制代碼 代碼如下:

import types
isinstance(3,types.IntType)  #返回True

x==y 比較x和y的值是否相等
x is y 和x is not y 比較x和y在內存中是否指向同一個對象

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汶川县| 崇文区| 华安县| 囊谦县| 云龙县| 盘山县| 双辽市| 广南县| 富源县| 和田市| 黄大仙区| 福州市| 老河口市| 定州市| 兴文县| 锦屏县| 潼关县| 吴忠市| 万州区| 扎兰屯市| 拉孜县| 榆树市| 乌什县| 调兵山市| 漳州市| 潞西市| 城固县| 新闻| 塔城市| 三门县| 莆田市| 磐石市| 海晏县| 师宗县| 富锦市| 富蕴县| 泰来县| 类乌齐县| 库伦旗| 汽车| 原阳县|