readlines()是把檔案的全部內容讀取到記憶體,並解析成乙個字串列表。
xreadlines()返回乙個iter(file)迭代器,在python2.3後已經不推薦這種表示方法了,直接使用for迴圈迭代檔案物件。
python中物件包含三要素:id, type, value。其中id用來唯一標識乙個物件,type標識物件的型別,value是物件的值。
is,判斷的是物件間的唯一身份標識,即id是否相同。
==,判斷兩個物件的value(值)是否相等。
sorted(dict.items(), key = lambda x:x[1], reverse=true) #reverse決定順序還是倒序
1、切片法
print('str'[::-1])
2、轉換成列表
list = list(str)
list.reverse()
''.join(list)
name = 'zhangsan'
1) %佔位符
'hello %s' % name
2) format
msg = "my name is {}, and age is {}"
msg.format("hqs",22)
3) f-string (python3.6之後才有的特性)
s = f' 你好'
list = ['a', 'b', 'c', 'd', 'e']
print(list[10:]) #輸出,不會產生indexerror錯誤
print(list[10]) #indexerror: list index out of range,列表越界
print([x*11 for x in range(10)])
list1 = [1, 2, 3]
list2 = [3, 4, 5]
set1 = set(list1)
set2 = set(list2)
#交集set1&set2,set1.intersection(set2)
#差集set1^set2,set1.difference(set2)
#並集set1.union(set2)
elements = ['a', 'b', 'c', 'a']
1、使用集合的方式
e = `list(set(elements))`
如何想保持原來的順序,可以加上sort方法,如下
`e.sort(key = elements.index)`
2、使用字典的方式,利用字典key的唯一性
`list({}.fromkeys(elements))` 或 `list({}.fromkeys(elements).keys())`
字串:replace, strip, split, reverse, upper, lower,join...
元組:index, count, len, dir
字典:get, keys, values, pop, popitems, clear, update, items...
絕大部分語言中都有反射機制的存在,可以用字串的方式去訪問物件的屬性,
呼叫物件的方法(但是不能去訪問方法),python中一切皆物件,是很多框架的基石。
自動幫助我們管理內容,清理垃圾的一種工具
1、引用計數
簡單直觀
2、標記清除
3、分代**
import random
random.shuffle(list)
print([x * x for x in range(1, 11)])
最大數為998
[i % 2 for i in range(10)]
(i % 2 for i in range(10))
閉包函式是定義在乙個函式內部的函式,為外層函式包裹著,特點是可以訪問外層函式中的變數。
def outer():
num = 1
def inner():
print(num)
return inner
func = outer()
num = 10000
func() #輸出結果:1
#理解函式式程式設計的重要語法結構,也是一種組織**的結構,統一提高了**的可重複使用性。
當乙個內嵌函式引用其外部作用域的變數,就會得到乙個閉包。建立乙個閉包必須滿足以下幾點:
* 必須有乙個內嵌函式
* 內嵌函式必須引用外部函式中的變數
* 外部函式的返回值必須是內嵌函式
import time
def time_pay(func):
def inner(*args, **kwargs):
for line in range(10):
print(line + 1)
time.sleep(1)
res = func(*args, **kwargs)
return res
return inner
@time_pay
def func1():
print('from func1...')
func1()
引數傳遞有:位置引數、預設引數、可變引數、關鍵字引數
分情況:
不可變引數用值傳遞:如整數和字串
不可變物件:可變引數是引用傳遞的,如列表、字典
終止條件一般定義在遞迴函式內部,在遞迴呼叫前要做乙個條件判斷,根據判斷的結果選擇是繼續呼叫自身還是return,返回終止遞迴。
終止的條件:
1、判斷的次數是否達到某一限定值
2、判斷運輸的結果是否達到某個範圍等,根據設計的目的來選擇
全稱 method resolution order,指的是方法解析順序
方法呼叫事就需要對當前類和基類進行搜尋以確定方法所在的位置,而搜尋是順序就是所謂的「方法解析順序」。
最早被提出是用在lisp中,應用在python中是為了解決原來基於深度優化搜尋演算法不滿足本地優先順序和單調性的問題。
本地優先順序:指宣告時父類的順序,比如c(a,b),如果訪問c類物件屬性,應該根據宣告順序,優先查詢a類,然後再查詢b類。
單調性:如果c的解析順序中,a排在b的前面,那麼在c的所有子類裡,也必須滿足這個順序。
__setattr__
__delattr__
__getattr__
__getattribute__
單下劃線:開始的成員變數叫保護變數,只有類物件和子類物件自己能訪問。
雙下劃線:開始的是私有成員,只有類物件自己能訪問,子物件也不能訪問到這個資料。
上下文協議所需要的方法,__enter__, __exit()__
import json
a = json.dumps(, ensure_ascii=false)
print(a)
`<.*>` 貪婪匹配,會匹配到符合條件的所有標籤
`<.*?>` 非貪婪匹配,匹配到符合條件的第乙個標籤
python面試題 基礎篇
1.python保留字有哪些?序號保留字說明1 and邏輯與操作,用於表示式運算2as 用於轉換資料型別 3assert 用於判斷變數或條件表示式的結果 4async 用於啟用非同步操作 5await 用於非同步操作中等待協程返回 6break 中斷迴圈語句的執行 7class 定義類8 conti...
面試題 C 基礎篇(補充)
1 定義乙個常量,可以很方便地進行引數的調整和修改。const物件一旦建立後其值不能被修改,所以const物件必須初始化。2 const 變數相對於巨集定義更安全。編譯器可以對const變數進行型別安全檢查,而對巨集定義只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。3 ...
c c 面試題(程式設計基礎篇)
相同的是變數進行自增操作,區別在於i 返回自增前的值,i返回自增後的值 當i是內建型別時,由於編譯器的優化,會使得i 和 i效率相同 當i是自定義資料型別時,i 會建立臨時物件,因為有了新物件的構造和析構,所以 i的效率高於i 當變數是bool型別,使用 取反來判斷true,false較好,例如 i...