python23區別
1. 未來十年python的前景會怎樣
用python已經不是裝逼了確實沒有錯,但現在逼界的風向是要反python嗎
我想不通的是,未來10年,如果不是python/ruby這樣的語言發展的時機,那會是什麼語言
我來說說對上述所謂問題我的看法吧:
1. 兼容性問題
2to3的問題讓社區不少人寒了心,但guido堅持要這樣做,因為他認為這是python追求簡單優雅所必須要做的。對於沒有歷史包袱的項目來說,直接選擇用python3000肯定是明智的。對於已有項目,2to3、six這樣的工具也是可以解決絕大部分問題。
大版本內的兼容性問題我還沒遇到過,不知道有啥案例讓我學習學習的。
對於活躍的開源項目,小的兼容性問題不容易成為項目發展的瓶頸。而對於不活躍或者設計較差的項目,即使是使用其它語言,時間長了,也一般不會是兼容性影響它的使用。
(我司的web後台幾年前大部分是C++寫的,理論上講不會有兼容性問題,但是現在當有需求實現時,卻沒有人想去維護那一整片一整片的業務邏輯和不同的前同事造的輪子。)
如果說,你想寫一個完美的能立即穩定下來並且再也不需要維護的軟體,那還是用C語言吧(換言之,這樣的東西python里不都是用C寫的嗎)
總的來說,我個人確實沒怎麼在python上吃過兼容性的虧,反而對C++大包大攬時留下的坑深惡痛絕
2. python的庫惡心
哪個庫?有C++的庫惡心嗎,有java的庫惡心嗎
3. python的使用場合
前面已經說過,guido是個有理想的人,他希望python在任何一個領域都能牛逼起來,所以python才會強調簡單、通用,讓你幹啥都能想到它。在實際上,python也未能做到處處通殺,甚至還沒能做到在某個領域的權威(在雲計算領域,python應該已經快了),基於語言本身的特點,目前在運維、大數據、雲計算、web、科學計算上都還混得可以
4. 找工作
積重難返,python更多的會在某種口味的創業團隊使用,國內的大公司不大會直接招python程序員,像
@白如冰
說的那樣。從社區上的招聘廣告來看,大部分的崗位需求是web後台和運維系統開發的,web後台又有大部分是要求django的。
python的水不深,單靠對語言本身的考察,難以分清水平高低,於是,要麼需要你有豐富的經驗,要麼你有堅強的毅力(比如C++學得很好)
最後,補充下,我極少在windows下用python(除了靠python在淘寶上秒殺了個手機),但每次一用就覺得別扭,也許這也是需要考慮的部分吧
5. 逼格
(1) 用什麼語言都不能證明逼格,包括匯編,也包括lisp/haskell。
(2) 在適當的場合用適當的工具,解除耦合、減少重復、易於擴展才是對逼格的更高挑戰。
比如有一組件對資料庫有大量操作,我同事認為他要用C++模板元編程加上一些巧妙的設計模式來生成sql是逼格高的體現,我認為在這樣的場景下至少要用上orm才能談得上對逼格有要求。
大膽預測,10年後,python程序員不一定會更多,但python一定會使用得更廣泛得多
2. day-04 總結python字元串
1.什麼是字元串
序列,有序,不可變的
用單引號或者雙引號任意字元集,
2,字元串中的字元
普通字元:ན', 'sdfsdfsd', '+ + (**&^%$#@@', '發技術規范舉案說法'
'''
python中的字元採用的是unicode編碼
1.什麼是編碼
就是數字和字元的一一對應的,其中字元對應的數字就是字元的編碼
a - 97
b - 98
2.編碼方式
ASCII碼表 :針對數字字元,字母字元(26個小寫字母和26個大寫字母),一些英文中對應的符號進行編碼
小寫字母要大於大寫字母的編碼值,採用一個位元組對字元進行編碼,只能對128個字元進行編碼
Unicode碼 :Unicode碼包含了ASCII碼表,同時能夠對世界上所有語言對應的符號進行編碼,
採用兩個位元組進行編碼,能夠編碼65536個字元
3.兩個函數
chr(編碼值)--將字元編碼值轉化為字元
ord(字元)-- 獲取字元對應的編碼值
中文編碼范圍 0x4e00~~~~~0x9fa5
一旦一個字元串確定了,那麼字元串中每個字元的位置就確定了,而且每個字元會對應一個表示其位置和順序的下標值
1,下標(索引)
字元串中的每一個字元都有一個下標,代表在字元串中的位置
下標范圍是:0到字元串長度---1 0(代表第一個字元的位置)
-1 ~ 字元串長度 -1(代表字元串中最後一個字元的位置)
'abc' # ''
獲取單個字元
語法:字元串[下標]--獲取字元串中指定下標對應的字元
說明 字元串--可以是字元串常量,也可以是字元串變數
[]---固定寫法
下標--字元的下標,不能越界。
獲取部分字元
語法:字元串[開始下標:結束下標:步長]
步長-- 一個整數
功能: 從開始下標獲取到結束下標前位置,每次下標值增加步長,結果是字元串
注意:當步長是整數,開始下標對應的字元要在結束下標的前面
當步長是負數,開始下標對應的字元要在結束下標的後面
方法2:字元串[開始下表:結束下標](相當於步長是一)
獲取部分字元,省略下標
獲取部分字元的時候開始下標和結束下標都可以省略
a.開始下標省略
字元串[:結束下標:步長] 或者字元串[:結束下表]
字元串是正數:從字元串開頭開始往後獲取
字元串是負數:從字元串結尾開始往前獲取
結束下標省略
字元串[開始下標::步長]
步長是正數,從開始下標從前往後獲取到字元串最後
步長是負數,從開始下標從後往前獲取到字元串開始
,加法運算
字元串1 + 字元串2 將兩個字元串拼接在一起,產生一個新的字元串
乘法運算
字元串 * n(正整數):字元串中的內容重復n次產生一個新的字元串
比較運算符
a. == !=
字元串1 == 字元串2 ---------判斷兩個字元串是否相等
b.> ,< , >= ,<= (所有的大寫字母編碼都比小寫的編碼小)
兩個字元串比較大下:從第一個開始,找到第一對不同的字元,然後比較他們的編碼值的大小
in 和 not in
字元串1 in 字元串2 :判斷字元串2是否包含字元串1
字元串1 not in 字元串2 :判斷字元串2是否不包含字元串1
len函數
len(序列)------- 獲取序列的長度
len(字元串)----獲取字元串中字元的個數
str函數
str(數據): 將數據轉換成字元串
其他數據轉換成字元串
所有的數據都可以轉換成字元串,轉換的時候就是在數據的值的最外面加引號
補充:系統對應的類型名不能用來給變數命名
字元串轉其他類型
字元串轉整數: int(字元串) 去掉引號後本身就是個整數的字元串才能轉
字元串轉浮點型: Float(字元串)
字元串轉布爾: boll(字元串) ,除了空串會轉化成False,其他的都會轉化成True
格式字元串
指的是字元串中通過格式佔位符來表示字元串中變化,然後後面再通過其他的值來給佔位符賦值
含有格式佔位符的字元串 % (佔位符對應的值)
說明:
含有格式佔位符有固定寫法,可以有多個
%----固定寫法
()----裡面值 的個數要和前面的格式佔位符一一對應
%d--整數
%s--字元串
%f--小數
%c--字元(可以將數字轉換成字元)
字元串.capitalize() - 將字元串第一個字元轉換成大寫
2.字元串對齊
字元串.center(width, fillchar) - 居中
字元串.ljust(width, fillchar) - 左對齊
字元串.rjust(width, fillchar) - 右對齊
width - 正整數,表示新的字元串的寬度
fillchar - 字元, 填充字元串
字元串.isalpha 若字元串至少有一個字元,並且所有字元都是字母就返回True,否則返回False
字元串。isdigit() 若字元串中只包含數字就返回True,否則返回False
若字元串中只包含數字字元,則返回True,否則返回 False
3.join(seq)
字元串1.join(字元串2): 將字元串1的內容插入到字元串2的每個字元之間
max(字元串) 編碼最大
min(字元串)
count(str)|返回 str 在 string 裡面出現的次數
|islower()|如果字元串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False
expandtabs(tabsize=8)|把字元串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8 。
|isspace()|如果字元串中只包含空白,則返回 True,否則返回 False
endswith(suffix)|檢查字元串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的范圍內是否以 obj 結束,如果是,返回 True,否則返回 False.