當前位置:首頁 » 編程語言 » pythonfloattolong

pythonfloattolong

發布時間: 2023-01-13 01:03:39

python2和python3的區別,轉換及共存

python2和python3的區別

1.性能

Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字元串和整形操作上可以取得很好的優化結果。

Py3.1性能比Py2.5慢15%,還有很大的提升空間。

2.編碼

Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>> 中國 = 'china'
>>>print(中國)
china

3. 語法

1)去除了<>,全部改用!=

在Python 2里,為了得到一個任意對象的字元串表示,有一種把對象包裝在反引號里(比如`x`)的特殊語法。在Python 3里,這種能力仍然存在,但是你不能再使用反引號獲得這種字元串表示了。你需要使用全局函數repr()。

Notes

Python 2

Python 3

`x` repr(x)

`'PapayaWhip' + `2`` repr('PapayaWhip'+repr(2))

Note:x可以是任何東西—一個類,函數,模塊,基本數據類型,等等。repr()函數可以使用任何類型的參數。

2)去除``,全部改用repr()

3)關鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數,要得到整型結果,請使用//

由於人們常常會忽視Python 3在整數除法上的改動(寫錯了也不會觸發Syntax Error),所以在移植代碼或在Python 2中執行Python 3的代碼時,需要特別注意這個改動。

所以,我還是會在Python 3的腳本中嘗試用float(3)/2或 3/2.0代替3/2,以此來避免代碼在Python 2環境下可能導致的錯誤(或與之相反,在Python 2腳本中用from __future__ import division來使用Python 3的除法)。

Python 2

print'3/2=',3/2print'3//2=',3//2print'3/2.0=',3/2.0print'3//2.0=',3//2.0
3/2=13//2=13/2.0=1.53//2.0=1.0

默認,如果兩個操作數都是整數,Python 2 自動執行整型計算。

Python 3

print('3/2=',3/2)print('3//2=',3//2)print('3/2.0=',3/2.0)print('3//2.0=',3//2.0)
3/2=1.53//2=13/2.0=1.53//2.0=1.0

Note: 需要注意的是「雙劃線」(//)操作符將一直執行整除,而不管操作數的類型,這就是為什麼 5.0//2.0 值為 2.0。Python 3 中,/ 操作符是做浮點除法,而 // 是做整除(即商沒有餘數,比如 10 // 3 其結果就為 3,余數會被截除掉,而 (-7) // 3 的結果卻是 -3。這個演算法與其它很多編程語言不一樣,需要注意,它們的整除運算會向0的方向取值。而在 Python 2 中,/ 就是整除,即和 Python 3 中的 // 操作符一樣。

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變數

6)print

去除print語句,加入print()函數實現相同的功能。同樣的還有 exec語句,已經改為exec()函數

在Python 2里,print是一個語句。無論你想輸出什麼,只要將它們放在print關鍵字後邊就可以。

Python 3里,print()是一個函數。就像其他的函數一樣,print()需要你將想要輸出的東西作為參數傳給它。

例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗號結尾禁止換行
3.X: print(x, end=" ") # 使用空格代替換行

在Python 2里,如果你使用一個逗號(,)作為print語句的結尾,它將會用空格分隔輸出的結果,然後在輸出一個尾隨的空格(trailing space),而不輸出回車(carriage return)。在Python 3里,通過把end=' '作為一個關鍵字參數傳給print()可以實現同樣的效果。參數end的默認值為' ',所以通過重新指定end參數的值,可以取消在末尾輸出回車符。
2.X: print # 輸出新行
3.X: print() # 輸出新行
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)

在Python 2里,你可以通過使用>>pipe_name語法,把輸出重定向到一個管道,比如sys.stderr。在Python 3里,你可以通過將管道作為關鍵字參數file的值傳遞給print()來完成同樣的功能。參數file的默認值為std.stdout,所以重新指定它的值將會使print()輸出到一個另外一個管道。
2.X: print (x, y) # 輸出repr((x, y))
3.X: print((x, y)) # 不同於print(x, y)!

exec語句

exec()函數使用一個包含任意Python代碼的字元串作為參數,然後就像執行語句或者表達式一樣執行它。exec()跟eval()是相似的,但是exec()更加強大並更具有技巧性。eval()函數只能執行單獨一條表達式,但是exec()能夠執行多條語句,導入(import),函數聲明—實際上整個Python程序的字元串表示也可以。

Notes

Python 2

Python 3

execcodeString exec(codeString)

execcodeStringina_global_namespace exec(codeString,a_global_namespace)

execcodeStringina_global_namespace,a_local_namespace exec(codeString,a_global_namespace,a_local_namespace)

  • 在最簡單的形式下,因為exec()現在是一個函數,而不是語句,2to3會把這個字元串形式的代碼用括弧圍起來。

  • Python 2里的exec語句可以指定名字空間,代碼將在這個由全局對象組成的私有空間里執行。Python 3也有這樣的功能;你只需要把這個名字空間作為第二個參數傳遞給exec()函數。

  • 更加神奇的是,Python 2里的exec語句還可以指定一個本地名字空間(比如一個函數里聲明的變數)。在Python 3里,exec()函數也有這樣的功能。

  • execfile語句

    就像以前的exec語句,Python 2里的execfile語句也可以像執行Python代碼那樣使用字元串。不同的是exec使用字元串,而execfile則使用文件。在Python 3里,execfile語句已經被去掉了。如果你真的想要執行一個文件里的Python代碼(但是你不想導入它),你可以通過打開這個文件,讀取它的內容,然後調用compile()全局函數強制Python解釋器編譯代碼,然後調用新的exec()函數。

    Notes

    Python 2

    Python 3

  • execfile('a_filename') exec(compile(open('a_filename').read(),'a_filename','exec'))
  • 7)輸入函數改變了,刪除了raw_input,用input代替: Python 2有兩個全局函數,用來在命令行請求用戶輸入。第一個叫做input(),它等待用戶輸入一個Python表達式(然後返回結果)。第二個叫做raw_input(),用戶輸入什麼它就返回什麼。這讓初學者非常困惑,並且這被廣泛地看作是Python語言的一個「肉贅」(wart)。Python 3通過重命名raw_input()為input(),從而切掉了這個肉贅,所以現在的input()就像每個人最初期待的那樣工作。
    2.X:guess = int(raw_input('Enter an integer : ')) # 讀取鍵盤輸入的方法
    3.X:guess = int(input('Enter an integer : '))

    Note:如果你真的想要請求用戶輸入一個Python表達式,計算結果,可以通過調用input()函數然後把返回值傳遞給eval()。

    I/O方法xreadlines()

    在Python 2里,文件對象有一個xreadlines()方法,它返回一個迭代器,一次讀取文件的一行。這在for循環中尤其有用。事實上,後來的Python 2版本給文件對象本身添加了這樣的功能。

    在Python 3里,xreadlines()方法不再可用了。2to3可以解決簡單的情況,但是一些邊緣案例則需要人工介入。

    Notes

    Python 2

    Python 3

  • for line in a_file.xreadlines(): for line in a_file:
  • for line in a_file.xreadlines(5): no change (broken)
  • 如果你以前調用沒有參數的xreadlines(),2to3會把它轉換成文件對象本身。在Python 3里,這種轉換後的代碼可以完成前同樣的工作:一次讀取文件的一行,然後執行for循環的循環體。

  • 如果你以前使用一個參數(每次讀取的行數)調用xreadlines(),2to3不能為你完成從Python 2到Python 3的轉換,你的代碼會以這樣的方式失敗:AttributeError: '_io.TextIOWrapper' object has no attribute 'xreadlines'。你可以手工的把xreadlines()改成readlines()以使代碼能在Python 3下工作。(readline()方法在Python 3里返回迭代器,所以它跟Python 2里的xreadlines()效率是不相上下的。)


  • 8)改變了順序操作符的行為,例如x<y,當x和y類型不匹配時拋出TypeError而不是返回隨即的 bool值

    9)去除元組參數解包。不能def(a, (b, c)):pass這樣定義函數了

    10)新式的8進制字變數,相應地修改了oct()函數。
    2.X的方式如下:
    >>> 0666
    438
    >>> oct(438)
    '0666'


    3.X這樣:
    >>> 0666
    SyntaxError: invalid token (<pyshell#63>, line 1)
    >>> 0o666
    438
    >>> oct(438)
    '0o666'

    11)增加了 2進制字面量和bin()函數
    >>> bin(438)
    '0b110110110'
    >>> _438 = '0b110110110'
    >>> _438
    '0b110110110'

    12)擴展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list對象和seq是可迭代的。

    13)新的super(),可以不再給super()傳參數,
    >>> class C(object):
    def __init__(self, a):
    print('C', a)
    >>> class D(C):
    def __init(self, a):
    super().__init__(a) # 無參數調用super()
    >>> D(8)
    C 8
    <__main__.D object at 0x00D7ED90>

    14)支持class decorator。用法與函數decorator一樣:
    >>> def foo(cls_a):
    def print_func(self):
    print('Hello, world!')
    cls_a.print = print_func
    return cls_a
    >>> @foo
    class C(object):
    pass
    >>> C().print()
    Hello, world!

    class decorator可以用來玩玩狸貓換太子的大把戲。更多請參閱PEP 3129

    4. 字元串和位元組串

    Python 2有兩種字元串類型:Unicode字元串和非Unicode字元串。Python 2有基於ASCII的str()類型,其可通過單獨的unicode()函數轉成unicode類型,但沒有byte類型。

    而在Python 3中,終於有了Unicode(utf-8)字元串,以及兩個位元組類:bytes和bytearrays。Python 3隻有一種類型:Unicode字元串(Unicode strings)。只有str一種類型,但它跟2.x版本的unicode幾乎一樣。

    Notes

    Python 2

    Python 3

  • u'PapayaWhip' 'PapayaWhip'
  • ur'PapayaWhipfoo' r'PapayaWhipfoo'
  • Python 2里的Unicode字元串在Python 3里即普通字元串,因為在Python 3里字元串總是Unicode形式的。

  • Unicode原始字元串(raw string)(使用這種字元串,Python不會自動轉義反斜線"")也被替換為普通的字元串,因為在Python 3里,所有原始字元串都是以Unicode編碼的。

  • 全局函數unicode()

    Python 2有兩個全局函數可以把對象強制轉換成字元串:unicode()把對象轉換成Unicode字元串,還有str()把對象轉換為非Unicode字元串。

    Python 3隻有一種字元串類型,Unicode字元串,所以str()函數即可完成所有的功能。(unicode()函數在Python 3里不再存在了。)

    Notes

    Python 2

    Python 3

  • unicode(anything) str(anything)

  • 5.數據類型

    1)Python 2有為非浮點數准備的int和long類型。int類型的最大值不能超過sys.maxint,而且這個最大值是平台相關的。可以通過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字范圍更大。

    在Python 3里,只有一種整數類型int,大多數情況下,它很像Python 2里的長整型。

    Note:檢查一個變數是否是整型,獲得它的數據類型,並與一個int類型(不是long)的作比較。你也可以使用isinstance()函數來檢查數據類型;再強調一次,使用int,而不是long,來檢查整數類型。

    sys.maxint

    由於長整型和整型被整合在一起了,sys.maxint常量不再精確。但是因為這個值對於檢測特定平台的能力還是有用處的,所以它被Python 3保留,並且重命名為sys.maxsize。

    Notes

    Python 2

    Python 3

  • from sys import maxint from sys import maxsize

❷ 在python中 float是什麼意思

float是一種數據類型。

浮點型數據類型,FLOAT 數據類型用於存儲單精度浮點數或雙精度浮點數。浮點數使用IEEE(電氣和電子工程師協會)格式。浮點類型的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 二進制指數和一個 23 位尾數。

由於尾數的高順序位始終為 1,因此它不是以數字形式存儲的。此表示形式為 float 類型提供了一個大約在 -3.4E+38 ~ 3.4E+38 之間的范圍。


(2)pythonfloattolong擴展閱讀:

相關用法

存儲為二進制分數的尾數大於或等於 1 且小於 2。對於 float 和 double 類型,最高有效位位置的尾數中有一個隱含的前導 1,這樣,尾數實際上分別為 24 和 53 位長,即使最高有效位從未存儲在內存中也是如此。

浮點包可以將二進制浮點數存儲為非標准化數,而不使用剛剛介紹的存儲方法。「非標准化數」是帶有保留指數值的非零浮點數,其中尾數的最高有效位為 0。

通過使用非標准化格式,浮點數的范圍可以擴展,但會失去精度。您無法控制浮點數以標准化形式還是非標准化形式表示;浮點包決定了表示形式。

用法舉例

如果存儲比精度更重要,請考慮對浮點變數使用 float 類型。相反,如果精度是最重要的條件,則使用 double 類型。

浮點變數可以提升為更大基數的類型(從 float 類型到 double 類型)。當您對浮點變數執行算術時,通常會出現提升。此算術始終以與具有最高精度的變數一樣高的精度執行。例如,請考慮下列類型聲明:

float f_short;double f_long;long double f_longer;f_short = f_short * f_long;

在前面的示例中,變數f_short提升到類型 double 並且與f_long相乘;然後,結果舍入到類型 float,然後賦給f_short。

❸ 享學課堂淺談Python序列內建函數都有哪些

1、Python類型操作符和內建函數總結
表4.5列出了所有操作符和內建函數,其中操作符順序是按優先順序從高到低排列的。同一種灰度的操作符擁有同樣的優先順序。注意在operator模塊中有這些(和絕大多數Python)操作符相應的同功能的函數可供使用。

表4.5 標准類型操作符和內建函數

操作符/函數

描 述

結 果a

字元串表示

``

對象的字元串表示

str

內建函數

cmp(obj1, obj2)

比較兩個對象

int

repr(obj)

對象的字元串表示

str

str(obj)

對象的字元串表示

str

type(obj)

檢測對象的類型

type

值比較

<

小於

bool

>

大於

bool

<=

小於或等於

bool

>=

大於或等於

bool

==

等於

bool

!=

不等於

bool

<>

不等於

bool

對象比較

is



bool

is not

不是

bool

布爾操作符

not

邏輯反

bool

and

邏輯與

bool

or

邏輯或

bool

2、Python數值類型操作符和內建函數

一、工廠函數
數值工廠函數總結類(工廠函數) 操作
bool(obj) b 返回obj對象的布爾值,也就是 obj.__nonzero__()方法的返回值。
int(obj, base=10) 返回一個字元串或數值對象的整數表 示, 類似string.atoi();
從Python 1.6起, 引入了可選的進制參數。
long(obj, base=10) 返回一個字元或數據對象的長整數表 示,類似string.atol(),
從Python1.6起, 引入了可選的進制參數 float(obj) ,
返回一個字元串或數據對象的浮點數 表示,類似string.atof()。
complex(str) or返回一個字元串的復數表示,或 者根據給定的實數,
complex(real, imag=0.0) (及一個可選 的虛數部分)生成一個復數對象。

二、內建函數
1、分類
Python 有五個運算內建函數用於數值運算:
abs(num), coerce(num1,num2), divmod(num1,num2), pow(num1,num2,mod=1)和 round(flt,ndig=0)
其中abs()返回給定參數的絕對值。如果參數是一個復數, 那麼就返回math.sqrt(num.real2 + num.imag2).
coerce()是一個數據類型轉換函數,不過它的行為更像一個運算符.數coerce()為程序員提供了不依賴Python 解釋器,而是自定義兩個數值類型轉換的方法。對一種新創建的數值類型來說, 這個特性非常有用.函數coerce()僅返回一個包含類型轉換完畢的兩個數值元素的元組.
divmod()內建函數把除法和取余運算結合起來, 返回一個包含商和余數的元組.對整數來說,它的返回值就是地板除和取余操作的結果.對浮點數來說,返回的商部分是math.floor(num1/num2),對復數來說,商部分是ath.floor((num1/num2).real).
pow()它和雙星號 (**)運算符都可以進行指數運算.不過二者的區別並不僅僅在於一個是運算符,一個是內建函數.在Python 1.5 之前,並沒有 ** 運算符,內建函數pow()還接受第三個可選的參數,一個余數參數.如果有這個參數的, pow() 先進行指數運算,然後將運算結果和第三個參數進行取余運算.這個特性主要用於密碼運算,並且比 pow(x,y) % z 性能更好, 這是因為這個函數的實現類似於C 函數pow(x,y,z).
round()用於對浮點數進行四捨五入運算。它有一個可選的小數位數參數.如果不提供小數位參數, 它返回與第一個參數最接近的整數(但仍然是浮點類型).第二個參數告訴round 函數將結果精確到小數點後指定位數.

2、函數int()/round()/math.floor()它們之間的不同之處:
函數 int()直接截去小數部分.(返回值為整數)
函數 floor()得到最接近原數但小於原數的整數.(返回值為浮點數)
函數 round() 得到最接近原數的整數.(返回值為浮點數)

3、進制轉換函數:
返回字元串表示的8 進制和16 進制整數,它們分別是內建函數:
oct()和 hex(). oct(255)='0377'/hex(255)='0xff'
函數chr()接受一個單位元組整數值(0到255),返回一個字元串(ASCII),其值為對應的字元.chr(97)='a'
函數ord()則相反,它接受一個字元(ASCII 或 Unicode),返回其對應的整數值.ord('A')=65
3、Python字元串函數
(一)標准類型操作符和標准內建函數
1)、標准類型操作符
>,<,>=,<=,==,!=,<>對象值得比較
註:做比較時字元串是按ASCII值的大小來比較的
is 對象身份比較
and,or,not 布爾類型
2)標准內建函數
type(obj)
cmp(obj1,obj2)
str(obj)和repr(obj) 或反引號運算符(``) 可以方便的以字元串的方式獲取對象的
內容、類型、數值屬性等信息。str()函數得到的字元串可讀性好, 而repr()函數得到的字元
串通常可以用來重新獲得該對象, 通常情況下 obj == eval(repr(obj)) 這個等式是成立的
isinstance(obj,type) 判斷對象的類型
(二)序列操作
1、序列操作
字元串屬於序列對象,可以使用所有序列的操作和函數
切片 [] [:] [::]
簡單總結:
*索引(S[i])獲取特定偏移的元素。
——第一個元素偏移為0
——(S[0])獲取第一個元素。
——負偏移索引意味著從最後或右邊反向進行計數
——(S[-2])獲取倒數第二個元素(就像S[len(s)-2]一樣
*分片[S[i:j]提取對應的部分作為一個序列
——右邊界不包含在內
——分片的邊界默認為0和序列的長度,如果沒有給出的話S[:]
——(S[1:3])獲取了從偏移為1,直到但不包括偏移為3的元素
——(S[1:])獲取從偏移為1到末尾之間的元素
——(S[:3])獲取從偏移為0直到但不包括偏移為3的元素
——(S[:-1])獲取從偏移為0直到但不包括最後一個元素之間的元素
——(S[:])獲取從偏移為0到末尾之間的元素,這有效地實現了頂層S拷貝
拷貝了一個相同值,但是是不同內存區域的對象。對象字元串這樣不可變的對象不是很有用,但是對於可以實地修改的對象來說很有用。
比如列表。
擴展分片:第三個限制值 【步進】
完整形式:X[I:J:K]:這標識索引X對象的元素,從偏移為I直到J-1,每隔K元素索引一次。第三個限制值,K,默認為1
實例

Python Code

1
2
3
4
5

>>> S='abcdefghijk'
>>> S[1:10]
'bcdefghij'
>>> S[1:10:2]
'bdfhj

也可以使用負數作為步進。
分片表達式

Python Code

1
2

>>> "hello"[::-1]
'olleh'

通過負數步進,兩個邊界的意義實際上進行了反轉。
3、成員操作符 in ,not in
返回布爾值True 或False
可以使用string模塊來判斷輸入字元的合法性,可見成品中的idcheck.py
4、字元串連接
+ 連接字元串 『name』+' '+'jin'
字元串格式化 '%s %s' % ('name','jin')
join()方法 ' '.join(('name','jin')) ' '.join(['name','jin'])
5、刪除清空字元串
del aString
aString=''
(三)、序列函數
序列類型函數
len(str) 返回字串的長度
enumerate(iter):接受一個可迭代對象作為參數,返回一個enumerate
max(str)/min(str):max()和min()函數對其他的序列類型可能更有用,但對於string類型它們能很好地運行,返回最大或者最小的字元(按照ASCII 碼值排列),
zip([it0, it1,... itN]) 返回一個列表,其第一個元素是it0,it1,...這些元素的第一個元素組成的一個元組,第二個...,類推.
reversed(seq)c 接受一個序列作為參數,返回一個以逆序訪問的迭代器(PEP 322)
sorted(iter,func=None,key=None,reverse=False) 接受一個可迭代對象作為參數,返回一個有序的列表;可選參數func,key 和reverse 的含義跟list.sort()內建函數的參數含義一樣.
注意:
sorted等需要在原處修改的函數無法用在字元串對象,但可以產生新的對象
sum處理的對象是數字,不能用在字元串
>>> sorted(s)
['a', 'e', 'e', 'g', 'g', 'g', 'o']
(四)只適合於字元串類型的函數
1)raw_input()函數
內建的raw_input()函數使用給定字元串提示用戶輸入並將這個輸入返回,下面是一個使
用raw_input()的例子:
>>> user_input = raw_input("Enter your name: ")
>>> prin user_input
2)str() and unicode()
str()和unicode()函數都是工廠函數,就是說產生所對應的類型的對象.它們接受一個任
意類型的對象,然後創建該對象的可列印的或者Unicode 的字元串表示. 它們和basestring 都
可以作為參數傳給isinstance()函數來判斷一個對象的類型
3)chr(), unichr(), and ord()
chr()函數用一個范圍在range(256)內的(就是0 到255)整數做參數,返回一個對應的字元.unichr()跟它一樣,只不過返回的是Unicode 字元
ord()函數是chr()函數(對於8 位的ASCII 字元串)或unichr()函數(對於Unicode 對象)
的配對函數,它以一個字元(長度為1 的字元串)作為參數,返回對應的ASCII 數值,或者Unicode
數值,如果所給的Unicode 字元超出了你的Python 定義范圍,則會引發一個TypeError 的異常
(五)、只適用於字元串的操作符
1、格式化操作符 %
字元串格式化符號
格式化字元 轉換方式
%c 轉換成字元(ASCII 碼值,或者長度為一的字元串)
%ra 優先用repr()函數進行字元串轉換
%s 優先用str()函數進行字元串轉換
%d / %i 轉成有符號十進制數
%ub 轉成無符號十進制數
%ob 轉成無符號八進制數
%xb/%Xb (Unsigned)轉成無符號十六進制數(x/X 代表轉換後的十六進制字元的大
小寫)
%e/%E 轉成科學計數法(e/E 控制輸出e/E)
%f/%F 轉成浮點數(小數部分自然截斷)
%g/%G %e 和%f/%E 和%F 的簡寫
%% 輸出%
格式化操作符輔助指令
符號 作用
* 定義寬度或者小數點精度
- 用做左對齊
+ 在正數前面顯示加號( + )
<sp> 在正數前面顯示空格
# 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於
用的是'x'還是'X')
0 顯示的數字前面填充『0』而不是默認的空格
% '%%'輸出一個單一的'%'
(var) 映射變數(字典參數)
m.n m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
2、字元串模板: 更簡單的替代品
由於新式的字元串Template 對象的引進使得string 模塊又重新活了過來,Template 對象
有兩個方法,substitute()和safe_substitute().前者更為嚴謹,在key 缺少的情況下它會報一
個KeyError 的異常出來,而後者在缺少key 時,直接原封不動的把字元串顯示出
3、原始字元串操作符( r/R )
字元串抑制轉義r'帶特殊符號的字串'
myfile=open(r'C:\new\text.data','w')
4、Unicode 字元串操作符( u/U )
u'abc' U+0061 U+0062 U+0063
u'\u1234' U+1234
u'abc\u1234\n' U+0061 U+0062 U+0063 U+1234 U+0012

(六)字元串對象的方法:
1、刪減
T2.lstrip() 移除字元串前面字元(默認空格),返回字元串
T2.rstrip() 移除字元串後面字元(默認空格),返回字元串
T2.strip() 移除字元串前後面空格,返回字元串 默認空格,可以其他字元 S.strip('"')
2、切割
partition(sep),
rpartition(sep),
splitlines([keepends]),#把S按照行分割符分為一個list,keepends是一個bool值,如果為真每行後而會保留行分割符
split([sep [,maxsplit]]),#以sep為分隔符,把S分成一個list。maxsplit表示分割的次數。默認的分割符為空白字元
rsplit([sep[,maxsplit]]) #從右到左切割
備註:
partition()函數族是2.5版本新增的方法。它接受一個字元串參數,並返回一個3個元素的 tuple 對象。
如果sep沒出現在母串中,返回值是 (sep, 『』, 『』);
否則,返回值的第一個元素是 sep 左端的部分,第二個元素是 sep 自身,第三個元素是 sep 右端的部分。
>>> S.partition(';')
('', ';', ' generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n')
參數 maxsplit 是分切的次數,即最大的分切次數,所以返回值最多有 maxsplit+1 個元素。
s.split() 和 s.split(『 『)的返回值不盡相同
>>> ' hello world!'.split()
['hello', 'world!']
>>> ' hello world!'.split(' ')
['', '', 'hello', '', '', 'world!']
>>> S.split('\n',3)
['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n']
超過最大切割個數後面的全部為一個元素
按行切割
>>> S
'; generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n'
>>> S.splitlines()
['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2', 'nameserver 178.79.131.110', 'nameserver 202.96.199.133']

產生差異的原因在於當忽略 sep 參數或sep參數為 None 時與明確給 sep 賦予字元串值時 split() 採用兩種不同的演算法。
對於前者,split() 先去除字元串兩端的空白符,然後以任意長度的空白符串作為界定符分切字元串
即連續的空白符串被當作單一的空白符看待;
對於後者則認為兩個連續的 sep 之間存在一個空字元串。因此對於空字元串(或空白符串),它們的返回值也是不同的:
>>> ''.split()
[]
>>> ''.split(' ')
['']
3、變形
lower(),#全部小寫
upper(),#全部小寫
capitalize(),#首字母大寫
swapcase(),#大小寫交換
title()#每個單詞第一個大寫,其他小寫
備注
因為title() 函數並不去除字元串兩端的空白符也不會把連續的空白符替換為一個空格,
所以建議使用string 模塊中的capwords(s)函數,它能夠去除兩端的空白符,再將連續的空白符用一個空格代替。

Python Code

1
2
3
4

>>> ' hello world!'.title()
' Hello World!'
>>> string.capwords(' hello world!')
'Hello World!'

4、連接
join(seq)
join() 函數的高效率(相對於循環相加而言),使它成為最值得關注的字元串方法之一。
它的功用是將可迭代的字元串序列連接成一條長字元串,如:
>>> conf = {'host':'127.0.0.1',
... 'db':'spam',
... 'user':'sa',
... 'passwd':'eggs'}
>>> ';'.join("%s=%s"%(k, v) for k, v in conf.iteritems())
'passswd=eggs;db=spam;user=sa;host=127.0.0.1'
>>> S=''.join(T) #使用空字元串分割把字元列表轉換為字元串
5、查找
count( sub[, start[, end]]),#計算substr在S中出現的次數
find( sub[, start[, end]]),#返回S中出現sub的第一個字母的標號,如果S中沒有sub則返回-1。start和end作用就相當於在S[start:end]中搜索
index( substr[, start[, end]]),#與find()相同,只是在S中沒有substr時,會返回一個運行時錯誤
rfind( sub[, start[,end]]),#返回S中最後出現的substr的第一個字母的標號,如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號
rindex( sub[, start[, end]])
T2.find('ie') 字元串方法調用:搜索
find()----找到的第一個符合字元的index
rfind()-----找到最後一個符合的字元的index
備註:
find()函數族找不到時返回-1,index()函數族則拋出ValueError異常。
另,也可以用 in 和 not in 操作符來判斷字元串中是否存在某個模板
6、替換
replace(old, new[,count]),#把S中的oldstar替換為newstr,count為替換次數。這是替換的通用形式,還有一些函數進行特殊字元的替換
translate(table[,deletechars]) #使用上面的函數產後的翻譯表,把S進行翻譯,並把deletechars中有的字元刪掉
備註:
replace()函數的 count 參數用以指定最大替換次數
translate() 的參數 table 可以由 string.maketrans(frm, to) 生成
translate() 對 unicode 對象的支持並不完備,建議不要使用
7、判定
isalnum(),#是否全是字母和數字,並至少有一個字元
isalpha(),是否全是字母,並至少有一個字元
isdigit(),是否全是數字,並至少有一個字元 ,如果是全數字返回True,否則返回False
islower(),#S中的字母是否全是小寫
isupper(),#S中的字母是否是大寫
isspace(),#是否全是空白字元,並至少有一個字元
istitle(),S是否是首字母大寫的
startswith(prefix[, start[, end]]), #是否以prefix開頭
endswith(suffix[,start[, end]]),#以suffix結尾
備註:
這些函數都比較簡單,顧名知義。需要注意的是*with()函數族可以接受可選的 start, end 參數,善加利用,可以優化性能。
另,自 Py2.5 版本起,*with() 函數族的 prefix 參數可以接受 tuple 類型的實參,當實參中的某人元素能夠匹配,即返回 True。
8、填充
字元串在輸出時的對齊:
center(width[, fillchar]), 字元串中間對齊
ljust(width[, fillchar]), 字元串左對齊,不足部分用fillchar填充,默認的為空格
rjust(width[, fillchar]), 字元串右對齊,不足部分用fillchar填充,默認的為空格
zfill(width), 把字元串變成width長,並在右對齊,不足部分用0補足
expandtabs([tabsize])把字元串中的製表符(tab)轉換為適當數量的空格。
fillchar 參數指定了用以填充的字元,默認為空格
zfill的z為zero的縮寫,顧名思義,是以字元0進行填充,用於數值輸出
expandtabs()的tabsize 參數默認為8。它的功能是把字元串中的製表符(tab)轉換為適當數量的空格。
9、編碼
encode([encoding[,errors]]),
decode([encoding[,errors]])
這是一對互逆操作的方法,用以編碼和解碼字元串。因為str是平台相關的,它使用的內碼依賴於操作系統環境,
而unicode是平台無關的,是Python內部的字元串存儲

❹ 【Python基礎】python基本語法規則有哪些

Python基本語法

Python的語法相對比C,C++,Java更加簡潔,比較符合人的正常思維。本篇介紹Python的基本語法,通過本篇文章你可以學到以下內容。

掌握Python的基本語法

識別Python中的關鍵字

Python是一門腳本語言,有以下特點:

面向對象:類

語法塊:使用縮進進行標記

注釋: #單行注釋,"""多行注釋""",'''我也是多行注釋''

列印與輸出:print(), input()

變數: 變數在賦值的時候確定變數的類型

模塊:通過import 模塊名進行載入模塊

Python的標識符

標識符是用戶編程時使用的名字,用於給變數、常量、函數、語句塊等命名,以建立起名稱與使用之間的關系。標識符通常由字母和數字以及其它字元構成。

標識符的命名遵循以下規定:

開頭以字母或者下劃線_,剩下的字元數字字母或者下劃線

Python遵循小駝峰命名法

不是使用Python中的關鍵字進行命名

代碼示例:

num = 10 # 這是一個int類型變數

錯誤命名示例:

123rate(數字開頭)、 mac book pro(含有空格),class(關鍵字)

Python關鍵字
以下列表中的關鍵字不可以當作標識符進行使用。Python語言的關鍵字只包含小寫字母。

❺ python 字元與數字如何轉換

一、python中字元串轉換成數字

(1)import string

t='555'

ts=string.atoi(tt)

ts即為tt轉換成的數字

轉換為浮點數 string.atof(tt)

(2)直接int

int(tt)即可。

二、數字轉換成字元串

tt=322

tem='%d' %tt

tem即為tt轉換成的字元串

(5)pythonfloattolong擴展閱讀:

Python 是一門有條理的和強大的面向對象的程序設計語言,類似於Perl, Ruby, Scheme, Java.Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。

❻ 享學課堂盤點python字元串是什麼及簡單操作方法

python 字元串str是在Python編寫程序過程中,最常見的一種基本數據類型。字元串是許多單個子串組成的序列,其主要是用來表示文本。字元串是不可變數據類型,也就是說你要改變原字元串內的元素,只能是新建另一個字元串。雖然這樣,但python中的字元串還是有許多很實用的操作方法。
Python 字元串操作方法大全
1、去空格及特殊符號
復制代碼代碼如下:
s.strip().lstrip().rstrip(',')

2、復制字元串
復制代碼代碼如下:
#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2

3、連接字元串
復制代碼代碼如下:
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1

4、查找字元
復制代碼代碼如下:
#strchr(sStr1,sStr2)
# < 0 為未找到
sStr1 = 'strchr'
sStr2 = 's'
nPos = sStr1.index(sStr2)
print nPos

5、比較字元串
復制代碼代碼如下:
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)

6、掃描字元串是否包含指定的字元

復制代碼代碼如下:
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)

7、字元串長度

復制代碼代碼如下:
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)

8、將字元串中的大小寫轉換

復制代碼代碼如下:
S.lower() #小寫
S.upper() #大寫
S.swapcase() #大小寫互換
S.capitalize() #首字母大寫
String.capwords(S) #這是模塊中的方法。它把S用split()函數分開,然後用capitalize()把首字母變成大寫,最後用join()合並到一起
#實例:
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1

9、追加指定長度的字元串
復制代碼代碼如下:
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1

10、字元串指定長度比較

復制代碼代碼如下:
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])

11、復制指定長度的字元

復制代碼代碼如下:
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1

12、將字元串前n個字元替換為指定的字元
復制代碼代碼如下:
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1

13、掃描字元串
復制代碼代碼如下:
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos

14、翻轉字元串

復制代碼代碼如下:
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1

15、查找字元串
復制代碼代碼如下:
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)

16、分割字元串

復制代碼代碼如下:
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
#或者
s = 'ab,cde,fgh,ijk'
print(s.split(','))

17、連接字元串

復制代碼代碼如下:
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)

18、PHP 中 addslashes 的實現

復制代碼代碼如下:
def addslashes(s):
d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
return ''.join(d.get(c, c) for c in s)

s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
print s
print addslashes(s)

19、只顯示字母與數字
復制代碼代碼如下:
def OnlyCharNum(s,oth=''):
s2 = s.lower();
fomart = ''
for c in s2:
if not c in fomart:
s = s.replace(c,'');
return s;

print(OnlyStr("a000 aa-b"))

20、截取字元串
復制代碼代碼如下:
str = '0123456789′
print str[0:3] #截取第一位到第三位的字元
print str[:] #截取字元串的全部字元
print str[6:] #截取第七個字元到結尾
print str[:-3] #截取從頭開始到倒數第三個字元之前
print str[2] #截取第三個字元
print str[-1] #截取倒數第一個字元
print str[::-1] #創造一個與原字元串順序相反的字元串
print str[-3:-1] #截取倒數第三位與倒數第一位之前的字元
print str[-3:] #截取倒數第三位到結尾
print str[:-5:-3] #逆序截取,具體啥意思沒搞明白?

21、字元串在輸出時的對齊
復制代碼代碼如下:
S.ljust(width,[fillchar])
#輸出width個字元,S左對齊,不足部分用fillchar填充,默認的為空格。
S.rjust(width,[fillchar]) #右對齊
S.center(width, [fillchar]) #中間對齊
S.zfill(width) #把S變成width長,並在右對齊,不足部分用0補足

22、字元串中的搜索和替換

復制代碼代碼如下:
S.find(substr, [start, [end]])
#返回S中出現substr的第一個字母的標號,如果S中沒有substr則返回-1。start和end作用就相當於在S[start:end]中搜索
S.index(substr, [start, [end]])
#與find()相同,只是在S中沒有substr時,會返回一個運行時錯誤
S.rfind(substr, [start, [end]])
#返回S中最後出現的substr的第一個字母的標號,如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]]) #計算substr在S中出現的次數
S.replace(oldstr, newstr, [count])
#把S中的oldstar替換為newstr,count為替換次數。這是替換的通用形式,還有一些函數進行特殊字元的替換
S.strip([chars])
#把S中前後chars中有的字元全部去掉,可以理解為把S前後chars替換為None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])
#把S中的tab字元替換沒空格,每個tab替換為tabsize個空格,默認是8個

23、字元串的分割和組合

復制代碼代碼如下:
S.split([sep, [maxsplit]])
#以sep為分隔符,把S分成一個list。maxsplit表示分割的次數。默認的分割符為空白字元
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])
#把S按照行分割符分為一個list,keepends是一個bool值,如果為真每行後而會保留行分割符。
S.join(seq) #把seq代表的序列──字元串序列,用S連接起來

24、字元串的mapping,這一功能包含兩個函數
復制代碼代碼如下:
String.maketrans(from, to)
#返回一個256個字元組成的翻譯表,其中from中的字元被一一對應地轉換成to,所以from和to必須是等長的。
S.translate(table[,deletechars])
# 使用上面的函數產後的翻譯表,把S進行翻譯,並把deletechars中有的字元刪掉。需要注意的是,如果S為unicode字元串,那麼就不支持 deletechars參數,可以使用把某個字元翻譯為None的方式實現相同的功能。此外還可以使用codecs模塊的功能來創建更加功能強大的翻譯表。

25、字元串還有一對編碼和解碼的函數
復制代碼代碼如下:
S.encode([encoding,[errors]])
# 其中encoding可以有多種值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默認值為"strict",意思是UnicodeError。可能的值還有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通過codecs.register_error注冊的值。這一部分內容涉及codecs模塊,不是特明白
S.decode([encoding,[errors]])

26、字元串的測試、判斷函數,這一類函數在string模塊中沒有,這些函數返回的都是bool值
復制代碼代碼如下:
S.startswith(prefix[,start[,end]])
#是否以prefix開頭
S.endswith(suffix[,start[,end]])
#以suffix結尾
S.isalnum()
#是否全是字母和數字,並至少有一個字元
S.isalpha() #是否全是字母,並至少有一個字元
S.isdigit() #是否全是數字,並至少有一個字元
S.isspace() #是否全是空白字元,並至少有一個字元
S.islower() #S中的字母是否全是小寫
S.isupper() #S中的字母是否便是大寫
S.istitle() #S是否是首字母大寫的

27、字元串類型轉換函數,這幾個函數只在string模塊中有
復制代碼代碼如下:
string.atoi(s[,base])
#base默認為10,如果為0,那麼s就可以是012或0x23這種形式的字元串,如果是16那麼s就只能是0x23或0X12這種形式的字元串
string.atol(s[,base]) #轉成long
string.atof(s[,base]) #轉成float

這里再強調一次,字元串對象是不可改變的,也就是說在python創建一個字元串後,你不能把這個字元中的某一部分改變。任何上面的函數改變了字元串後,都會返回一個新的字元串,原字串並沒有變。其實這也是有變通的辦法的,可以用S=list(S)這個函數把S變為由單個字元為成員的list,這樣的話就可以使用S[3]='a'的方式改變值,然後再使用S=" ".join(S)還原成字元串

❼ Python基本語法都有哪些

標識符


第一個字元必須是英文字母或下劃線 _ 。標識符的其他的部分由字母、數字和下劃線組成。標識符對大小寫敏感。


保留字


保留字即關鍵字,不能用作任何標識符名稱。keyword 模塊可以輸出當前版本的所有關鍵字:


import keyword


print(keyword.kwlist)


['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']


注釋


單行注釋採用#,注釋是給人看的,可以是任意內容,解釋器會忽略掉注釋。多行注釋採用'''或"""。


# print("我是注釋,不會執行")


print("正常執行代碼")


'''


這是多行注釋,用三個單引號


這是多行注釋,用三個單引號


'''


print("Hello, World!")


"""


這是多行注釋,用三個雙引號


這是多行注釋,用三個雙引號


"""


print("Hello, World!")


行與縮進


Python 使用縮進來表示代碼塊而不是大括弧 {}。縮進的空格數是可變的,但是同一個代碼塊的語句必須是相同的縮進空格數。空格數建議一般空四個。其次注意Tab和四格空格混用可能會報錯,並且這個錯誤還不容易被察覺。


輸入輸出


一般情況下都是一條語法一行,如果寫的語句很長,我們還可以使用反斜杠()來呈現多行語句。在 [], {}, 或 () 中的多行語句,則不需要反斜杠。


sentence1 = "I love " +


"python"


sentence2 = ["I", "love",


"python"]


關於Python基本語法的內容,青藤小編就和您分享到這里了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。

熱點內容
編程基礎教學 發布:2025-07-14 09:09:48 瀏覽:94
電腦板能進入的手機版伺服器 發布:2025-07-14 09:08:10 瀏覽:554
roblox電腦版伺服器推薦 發布:2025-07-14 09:06:07 瀏覽:807
application緩存 發布:2025-07-14 09:01:56 瀏覽:345
安卓怎麼看綁定地區 發布:2025-07-14 09:01:49 瀏覽:85
籽岷的生存伺服器IP 發布:2025-07-14 08:51:06 瀏覽:419
我的世界搭建tcp伺服器 發布:2025-07-14 08:42:55 瀏覽:659
安卓jj比賽哪個版本有全記牌器 發布:2025-07-14 08:28:27 瀏覽:73
python腳本執行hive 發布:2025-07-14 08:26:24 瀏覽:489
媒體存儲可以刪除嗎 發布:2025-07-14 08:26:13 瀏覽:813