python學習筆記-Day2

1. 變量賦值

>>> a = 1
>>> b = a
>>> a = 2
>>> b
1

那可以看出來,b賦值爲a時,並沒有因爲a的改變而跟着改變,還是原來的值。這裏的原理就是:b在賦值a時,是在做一個將b指向a變量值所在的內存塊操作,所以當a變量更改值時,a變量會在內存中新開闢一個地址塊存儲新值,並不影響b變量的內存指向


2. 簡潔的賦值

鏈式賦值

a=b=1

多個變量同時賦值

user,passwd='jack', 'xxxx'


3.  python 2.x的input函數

在python 2.x中input函數接受的值是要求有類型的,例如說,字符串類型就需要加引號,不加引號的則被視爲變量


4. python中常量設置

常量概念:不能被改變的;

python中沒有常量的概念,如果你需要設置一個不被改變的,可以通過全部大寫的變量警示看代碼的,這個變量是不可改變的。


5. 導入模塊方法

import os  #導入os模塊
from os import os.path  #僅導入os模塊中的os.path方法


6. pyc是什麼,什麼時候回產生pyc文件

6.1 pyc是解釋性語言的字節碼文件,可以供解釋器讀懂.

6.2 這裏說明下,pyc並不是所有時候都會出現,只有當這個py文件作爲模塊(也就是被其它的py程序import導入)導入情況下會出現。

6.3 解釋器最終執行的是Pyc文件,而不是py文件。

6.4 import某個py文件導入後,生成了pyc文件,這時更改了這個py文件,pyc文件會根據修改時間不同去從新在py文件生成Pyc


7. python 3.x中已取消了長整型類型


8. 

應避免以下字符串拼接,這樣會將name變量單獨開闢內存空間,消耗不必要內存

name = 'jack'
print('name is '+name)

將字符串拼接寫法改爲格式化字符串寫法:

name = 'jack'
print('name is %s' % name)

 

9. 列表中分片

>>> name = ['jack', 'eason', 'tony', 'john', 'python']
>>> name[0:2]
['jack', 'eason']         #列表分片包含頭不包含尾
>>> name[2:]
['tony', 'john', 'python']    #如果要輸出到最後一個元素,分片結尾索引不寫


10. 列表中的怎刪改查

name = ['jack', 'eason', 'tony', 'john', 'python']
# 增
name.insert(2, 'xxx')   #在列表索引2位置上,插入元素值爲‘xxx’
name.append('xxx')    # 在列表最後追加一個元素值爲'xxx'

# 刪
name.remove('xxx')  # 刪除元素'xxx'
name.pop(2)   # 刪除索引位置2元素
del name[2:4] # 刪除2到4的元素(分片刪除發,同樣是包含頭不包含尾)

# 改
name[1] = 'xxx' # 將索引位置1的值改爲‘xxx’

# 查
name.index('xxx') # 查找匹配到'xxx'的第一個元素的索引位置


11. 深複製與淺複製

# 淺複製
>>> num = [1,2,3,[1,3,5]]
>>> num2 = num.copy()  # 將num列表複製給num2
>>> num[0] = 0
>>> num
[0, 2, 3, [1, 3, 5]]
>>> num2
[1, 2, 3, [1, 3, 5]]  # num發生該變,num2不改變
>>> num
[0, 2, 3, [1, 6, 5]]
>>> num2
[1, 2, 3, [1, 6, 5]] # num的嵌套列表該變,num2纔會該變

淺複製中,嵌套的列表在淺複製中並不是直接複製過來,而是複製了一條地址的指向,所以當num的嵌套列表發生該變,num2則會跟着該變,如果需要嵌套列表完全深層複製過來,可以使用深複製。

# 深複製
>>> num = [1,2,3,[1,3,5]]
>>> import copy
>>> num2 = copy.deepcopy(num)
>>> num [3][1] = 6
>>> num
[1, 2, 3, [1, 6, 5]]
>>> num2
[1, 2, 3, [1, 3, 5]]

延伸:淺複製和鏈式列表賦值有區別的

>>> num = num2 = [1,2,3,[1,3,5]]
>>> num2[0] = 6
>>> num
[6, 2, 3, [1, 3, 5]] # 可以看出這樣鏈式賦值,並沒有起到複製作用,反而是一個像linux中文件的‘硬鏈接’作用,當任何一個更改都被更改


12.  字符串的一些方法

# 去除首尾空格
name = ' jack '
name.strip()

# 字符串分割成序列
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']

# 序列組成字符串
>>> dir = ['', 'usr', 'bin', 'env']
>>> '/'.join(dir)
'/usr/bin/env'

# 字符串格式化方法
>>> msg = 'hello, {name}'
>>> print(msg.format(name='alex'))
hello, alex
>>> msg = 'hello, {0}, {1}'  
>>> print(msg.format('alex', 'jack'))
hello, alex, jack

# 格式化輸出字符串
>>> name = 'eason'
>>> print(name.center(40,'-')) # 打印name,共佔用40個字符位置,空白處使用‘-’填充
-----------------eason------------------


13. 字典的一些方法

# 獲取某個Key對應值
dic.get(key)  #區別於dic[key]這樣取值,如果key不存在,get方法返回None,而dic[key]則會報錯

# 獲取所有key值
dic.keys()

# 獲取所有value值
dic.values()

# 刪除字典某一項
del dic[xxx][xxx] 
dic.pop(key)

# 設置key的默認值
dic.setdefault(key, values)  # 取dic的key值,如果不存在,則默認創建一個key,默認值是values


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章