欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年12月08日 10:31:53   作者:  
這篇文章主要介紹了python基礎(chǔ)入門,包括文件輸入/輸出、內(nèi)建類型、字典操作等使用方法

一、變量和表達(dá)式

復(fù)制代碼 代碼如下:

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

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

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

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

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

復(fù)制代碼 代碼如下:

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

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

以 # 開頭的稱為注釋行。

二、條件語句

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

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

復(fù)制代碼 代碼如下:

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:用于中斷和繼續(xù)循環(huán)。

三、文件的輸入/輸出

復(fù)制代碼 代碼如下:

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

四、內(nèi)建類型

4.1 None類型

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

4.2 數(shù)值類型

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

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

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

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

4.3 字符串
字符串:單引號(‘)和雙引號(")的作用相同,只能創(chuàng)建單行字符串。轉(zhuǎn)義符是(\)。

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

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

復(fù)制代碼 代碼如下:

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(luò)(不包括j)之間的子串。若i省略則i=0,若j省略則j=len(s)-1

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

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

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

4.4 列表和元組(list & tuple)

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

復(fù)制代碼 代碼如下:

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

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

可變序列支持的操作:

復(fù)制代碼 代碼如下:

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

4.5 字典

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

使用{}來創(chuàng)建一個字典

復(fù)制代碼 代碼如下:

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

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

五、循環(huán)

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

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

六、函數(shù)

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

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

global a  # 獲得全局變量a

用戶自定義函數(shù):

復(fù)制代碼 代碼如下:

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)     # 調(diào)用foo

用戶自定義函數(shù)有如下屬性:

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

七、類

復(fù)制代碼 代碼如下:

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

類方法的定義:

復(fù)制代碼 代碼如下:

# 靜態(tài)方法:
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語句來捕獲異常:

復(fù)制代碼 代碼如下:

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代碼塊,如果發(fā)生其他類型的異常就將控制權(quán)轉(zhuǎn)到處理該異常的except的代碼塊,如果沒找到該代碼塊,程序?qū)⒔K止運行,若沒有發(fā)生異常,except代
碼會被忽略掉。

九、模塊

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

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

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

復(fù)制代碼 代碼如下:

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

為了避免這種情況,你需要創(chuàng)建一個可變對象的副本,然后對該副本進(jìn)行操作。

兩種創(chuàng)建可變對象的副本:

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

復(fù)制代碼 代碼如下:

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)

復(fù)制代碼 代碼如下:

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

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

十一、類型轉(zhuǎn)換

復(fù)制代碼 代碼如下:

int(x[,base])   #轉(zhuǎn)換為int
long(x[,base])
float(x)
tuple(x)
list(x)
chr(x)        #轉(zhuǎn)換為字符
unichr(x)     #轉(zhuǎn)換為Unicode字符
ord(x)        #字符轉(zhuǎn)換為整數(shù)值  
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]    再轉(zhuǎn)換成一個列表
eval('3+4')
f=open("foo")
a=repr(f)  # a="<open file 'foo',mode 'r' at dc030>"

十二、其他

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

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

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

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

復(fù)制代碼 代碼如下:

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

id(a)可以查看該對象的標(biāo)識(當(dāng)前的實現(xiàn)是該對象在內(nèi)存中的位置)

復(fù)制代碼 代碼如下:

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的子類的實例

復(fù)制代碼 代碼如下:

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

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

相關(guān)文章

  • python爬蟲之爬取百度音樂的實現(xiàn)方法

    python爬蟲之爬取百度音樂的實現(xiàn)方法

    今天小編就為大家分享一篇python爬蟲之爬取百度音樂的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 解決PySide+Python子線程更新UI線程的問題

    解決PySide+Python子線程更新UI線程的問題

    今天小編就為大家分享一篇解決PySide+Python子線程更新UI線程的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 如何基于Python代碼實現(xiàn)高精度免費OCR工具

    如何基于Python代碼實現(xiàn)高精度免費OCR工具

    這篇文章主要介紹了如何基于Python代碼實現(xiàn)高精度免費OCR工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python不支持 i ++ 語法的原因解析

    Python不支持 i ++ 語法的原因解析

    這篇文章主要介紹了Python不支持 i ++ 語法的原因解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 使用Pyrex來擴(kuò)展和加速Python程序的教程

    使用Pyrex來擴(kuò)展和加速Python程序的教程

    這篇文章主要介紹了使用Pyrex來擴(kuò)展和加速Python程序的教程,來自IBM官方技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python字符編碼與函數(shù)的基本使用方法

    Python字符編碼與函數(shù)的基本使用方法

    下面小編就為大家?guī)硪黄狿ython字符編碼與函數(shù)的基本使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python中Enum使用的幾點注意事項

    Python中Enum使用的幾點注意事項

    Python中的枚舉是作為一個類存在的,這是與其他語言的一個較為鮮明的特征,下面這篇文章主要給大家介紹了關(guān)于Python中Enum使用的幾點注意事項,需要的朋友可以參考下
    2022-02-02
  • Python 專題二 條件語句和循環(huán)語句的基礎(chǔ)知識

    Python 專題二 條件語句和循環(huán)語句的基礎(chǔ)知識

    本文主要介紹了Python條件語句和循環(huán)語句的基礎(chǔ)知識。主要內(nèi)容包括: 1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else;2.循環(huán)語句:while的使用及簡單網(wǎng)絡(luò)刷博器爬蟲;3.循環(huán)語句:for的使用及遍歷列表、元組、文件和字符串。
    2017-03-03
  • Python3實現(xiàn)將文件樹中所有文件和子目錄歸檔到tar壓縮文件的方法

    Python3實現(xiàn)將文件樹中所有文件和子目錄歸檔到tar壓縮文件的方法

    這篇文章主要介紹了Python3實現(xiàn)將文件樹中所有文件和子目錄歸檔到tar壓縮文件的方法,涉及Python3使用tarfile模塊實現(xiàn)tar壓縮文件的技巧,需要的朋友可以參考下
    2015-05-05
  • Python對象的list如何快速按照屬性查找

    Python對象的list如何快速按照屬性查找

    這篇文章主要介紹了Python對象的list如何快速按照屬性查找問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論