欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python從入門到精通(DAY 1)

系統 1694 0

1、要點

?? (1) 在C語言中沒有字符串,只有字符,

?? 在python中的字符串hello,在C語言中是以字符數組在內存存放['h','e','l','l','o'],如果對字符串修改,則是在內存中新開辟了一段空間進行存放。

?? 字符串特性:一旦修改,需要重新創建。

?? 例: "hello" + "ni" + "hao"????? 內存中:['h','e','l','l','o'] + ['n','i'] + ['h','a','o']

?? 萬惡的“+”,“+”號越多,在內存中多次重復創建,浪費空間。

?? C語言需要手動回收,而python,C#等高級語言自帶虛擬機會進行GC垃圾回收沒有被調用的內存訪問空間。

?? (2) python字符串的格式化(占位符)可以節省內存空間,有如下二種方式,例:

?說明:第二種format方式的效果會更好,性能更好,其實變量a的值沒有變,在格式化賦值時會在內存中新開辟空間存放。在python2.7和python3.4中測試結果相同

            
 >>> a = 'i am %s,age is %d'
>>> a % ('wangkai',33)
'i am wangkai,age is 33'
>>> print(a)
i am %s,age is %d

>>> a = 'i am {0},age is {1}' 
>>> a.format('wangkai',33) 
'i am wangkai,age is 33'
>>> print(a)
i am {0},age is {1}


          

(3) 在python中會生成一個緩存池來節省內存空間,主要存放經常用到的字符串及數字,所以在一定范圍內對變量賦同樣的值,他們的id值是一樣的,當超出這個池的時候,id值則會不同

?????? 分別在python2.7和python3.4版本中進行測試,測試結果如下:(經測試在python2.7和python3.4中效果一樣)

?????? 針對字符串,無限制

            
>>> a = 'asdfsafsafasfsafasdfasfasfasf'
>>> b = 'asdfsafsafasfsafasdfasfasfasf'
>>> id(a),id(b)
(140704388394128, 140704388394128)
>>> a = 'ni'
>>> b = 'ni'
>>> id(a),id(b)
(140704388417416, 140704388417416)


          

?????? 針對數字,范圍:小于-5,大于256

            
>>> a = -5
>>> b = -5
>>> id(a),id(b)
(8745920, 8745920)

>>> a = -6
>>> b = -6
>>> id(a),id(b)
(140718131946128, 140718131946320)

>>> aa=256
>>> bb=256
>>> id(aa),id(bb)
(8754272, 8754272)

>>> aa = 257   
>>> bb = 257    
>>> id(aa),id(bb)
(19083048, 18637656)


          

??????? 具體python源碼對數字的定義如下:

python從入門到精通(DAY 1)_第1張圖片

??? (4) python內部執行過程:

python從入門到精通(DAY 1)_第2張圖片

??? (5) print說明:

???? Python 2中的print語句被Python 3中的print()函數取代,這意味著在Python 3中必須用括號將需要輸出的對象括起來。

???? 特別說明:經測試在python2.6、python2.7,print作為語句,但已支持括號方式,例:a = 1 print a print(a)均可;

?????????????????? 在python3.4版本中,print作為函數,只支持括號方式。

????? 建議:為了代碼在python2和3上的兼容性,請直接使用print函數括號方式。

2、編碼轉換

?? 一般硬盤存儲為utf-8,讀入內存中為unicode,二者如何轉換

????? a = '你好'????????????? '\xe4\xbd\xa0\xe5\xa5\xbd'????

????? b = u'你好'???????????? u'\u4f60\u597d'???????????????

????? a.decode('utf-8')?????? u'\u4f60\u597d'?? (utf-8格式解碼為unicode)

????? b.encode('utf-8')?????? '\xe4\xbd\xa0\xe5\xa5\xbd'? (unicode格式加密為utf-8)

??? 注:在python2.7版本中需要如上轉換,在腳本中如要顯示中文,

??????? 只要在文件開頭加入 # _*_ coding: UTF-8 _*_ 或者 #coding=utf-8 就行了

??????? 在python3.4以后版本,無需轉換

?3、調用系統命令,并存入變量:

??? 1.import os

??? a = os.system('df -Th')

??? b = os.popen('df -Th','r') 返回一個文件對象

??? 2.import commands

??? c = commands.getoutput('df -Th')? 返回一個字符串

4、sys調用

??? import sys

??? sys.exit

??? print sys.argv

??? sys.path

5、導入模板方法:

????? 1.import sys [as newname]?

??? 多次重復使用import語句時,不會重新加載被指定的模塊,只是把對該模塊的內存地址給引用到本地變量環境。

????? 2.from sys import argv或(*)

????? 3.reload()

??? reload會重新加載已加載的模塊,但原來已經使用的實例還是會使用舊的模塊,而新生產的實例會使用新的模塊;reload后還是用原來的內存地址;不能支持from。。import。。格式的模塊進行重新加載。

?? 建議使用第一種,第二種導入的對象或變量會與當前的變量會沖突。

6、用戶交互:

???? 在python2.7版本中

??????? raw_input:交互輸入內容轉化為字符串;

??????? input:交互輸入內容不進行轉化;

???? 在python3.4版本中只有input,想要獲取數字,需要進行int轉變。

???? 舉例:

            
#_*_ coding:utf-8 _*_

info = 'This var will be printed out ...'
name = raw_input('Please input your name:')
age = int(raw_input('age:'))  
#age = input('age:')
job = raw_input('Job:')
salary = input('Salary:')
print type(age)

print '''
Personal information of %s:
     Name: %s 
     Age : %d
     Job : %s
    Salary: %d
--------------------------
''' % (name,name, age,job,salary)


          

7、用戶輸入內容隱藏:

??? 輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:

            
>>> import getpass
>>> pwd = getpass.getpass("please input the passwd:")
please input the passwd:
>>> print(pwd)
asdfasdfa


          

8、文件操作:??

?? python2.7版本中可以用file和open打開文件,? python3.4版本中只有open

?????? f = open('file_name','r')

?????? g = file('file_name','r')?

?? 其中打開模式有'r','w,','a','b','+'

?????? w:替換重寫?? a:追加?

?????? b:二進制文件,主要用于跨平臺,來解決window和linux的回車換行區別

?????? +:用于同時讀寫

?? * 一般會對文件讀到的第一行去掉末尾的換行符????? f.readline().strip('\n')

?? * xreadlines:針對大文件,一行一行讀,默認是把全文件讀入內存。

?? * r+ :讀寫,默認從文件尾寫入,可以由seek跳到指定位置,然后替換文件內容。

?? 初始文件aa.txt

kevin:123:1
wang:22:2
kai:311:3

?對python2.7和python3.4測試結果一樣。

            
# _*_ coding: UTF-8 _*_

import sys,os
file = sys.argv[1]

f = open(file,'r+')
line_list = f.readlines()

new_list = []
for line in line_list:
  #去掉行尾的換行符
  line = line.strip('\n')
  #對行信息按分隔符進行分列
  value_list = line.split(':')

  #獲取最后一字段并數字化
  last_value = int(value_list[-1])
  #對最后一字段進行數字計算
  last_value *= 13

  value_list[-1] = str(last_value)
  #將列表轉變為字符串
  new_str = ':'.join(value_list)
  #將循環的改變后的行追加到新的列表
  new_list.append(new_str)
'''
  ######第一種方法按行追加到文件#####
  #按修改后的行追加到文件中
  #f.writelines(new_str + '\n')
'''
'''
#####第二種方法將所有行統一追加到文件#####
#將所有修改后的新列表轉化為字符串
my_str = '\n'.join(new_list)
#將指標移到行首
f.seek(0)
#將寫回到文件
f.write(my_str + '\n')
'''
f.close()


          

9、類型轉變:

Python 有辦法將任意值轉為字符串:將它傳入repr() 或str() 函數。

函數str() 用于將值轉化為適于人閱讀的形式,而repr() 轉化為供解釋器讀取的形式(如果沒有等價的
語法,則會發生SyntaxError 異常) 某對象沒有適于人閱讀的解釋形式的話, str() 會返回與repr()等同的值。很多類型,諸如數值或鏈表、字典這樣的結構,針對各函數都有著統一的解讀方式。字符串和浮點數,有著獨特的解讀方式。
Some examples:

下面有些例子

            
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'
          


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人黄色免费在线观看 | www.日韩| 久久精品无码一区二区日韩av | 播五月婷婷 | 视频一区在线 | 欧美色偷偷亚洲天堂bt | av免费在线免费观看 | 中文字幕免费 | 久久精品国产999大香线焦 | 国产欧美精品在线 | 国产亚洲精品久久久极品美女 | 国产一区二区三区国产精品 | 欧美综合自拍亚洲综合网 | 色tv国产| 欧美日韩中文在线视频 | 九九热在线免费视频 | 在线看av网址 | 成人精品视频 | 久草在线首页 | 欧美日韩在线视频一区 | 中文字幕网在线 | 一级特色黄大片 | 天天操综合网 | 黄片一级毛片 | 亚洲一区国产 | 情欲色香味 | 四虎在线免费观看视频 | 傲视影院午夜毛片 | 三级成人片 | 一级成人毛片免费观看欧美 | 国内精品久久毛片一区二区 | 免费v片在线观看 | 国产成久久免费精品AV片天堂 | 国产精品久久久久久久久免费相片 | 国产一区二区三区久久久久久久久 | 国产成人免费永久播放视频平台 | 日韩大片在线 | 激情综合五月亚洲婷婷 | 日韩激情视频在线 | 日日碰| 国产精品美女www爽爽爽视频 |