標籤:end 構造 elf eth 成員 lin self 變數 span
25、
三引號
python中用三引號可以引用大段文字,且中間可以書寫任意單雙引號
26、
原意字元
當一段字串中有太多需要轉義的符號時,可以使用原意字元,避免總是轉義 print(r”this is a newline simbol:\n.and that is a simbol:*”) 雙引號中原樣顯示。
27、
python自省
dir(對象)---可以查看此對象有哪些方法和屬性
dir(__builtins__)查看有哪些內建函數
help(命令)---查看命令的使用方式
print(logging.__file__)----查看logging模組的位置
28、
print的參數
print(value1,…,sep= ‘ ’,end=’\n’,file=sys.stdout,flush=false)
預設是各參數之間空格分割,最後一個參數之後換行,如果有其他列印需求,可以修改參數。
29、
列印出注釋文字
def print_abc:
“””列印出abc字串”””
print(“abc”)
print(print_abc.__doc__)
說明:函數或者類的說明文檔,必須在函數或類定義的行後面,且在第一個語句的前面。
30、
行串連符
”
\
”
當輸出一個字串,但是字串太長,在代碼中要換行,但又不能在顯示中換行時,使用行串連符“\”
print(“這是一個很唯美的故事,\
故事的女主人公很美。”)
31、
靜態方法、類方法
建立靜態方法:
@staticmethod
def method_name()
建立類方法:
@Classmethod
def method_name()
靜態方法和類方法既可以供類調用,又可以供類的執行個體調用。
而執行個體方法只能供類的執行個體調用,不能供類調用。
class Name:
@staticmethod
def name1():
print(“name1”)
@classmethod
def name2():
print(“name2”)
def name3():
print(“name3”)
Name.name3() #調用會出錯
Name().name3() #執行個體化的調用,正確
35、類的變數、執行個體的變數
python的類變數和C++的靜態變數不同,並不是由類的所有對象共用。類本身擁有自己的類變數(儲存在記憶體),當一個TestClass類的對象被構造時,會將當前類變數拷貝一份給這個對象,當前類變數的值是多少,這個對象拷貝得到的類變數的值就是多少;而且,通過對象來修改類變數,並不會影響其他對象的類變數的值,因為大家都有各自的副本,更不會影響類本身所擁有的那個類變數的值;只有類自己才能改變類本身擁有的類變數的值
Class Name:
test = 1
def __init__(self):
self.test1 = 2
a = Name
b = Name()
print(a.test, b.test, b.test1) #如果a.test1則報錯
類可以訪問類的變數,不能訪問執行個體的變數。執行個體可以訪問類的變數和執行個體的變數。
36、
繼承和調用
class Parent:
def __init__(self):
self.name = ‘name’
class Child(Parent):
name1 = ‘name1’
def __init__(self):
self.name2 = ‘name2’
def print1(self):
print(self.name1) #正確,因為init函數中沒有成員變數name1,self就指向類的變數name1。如果類的變數和成員變數中有相同的name1,則指向成員變數name1.
class Child(Parent):
name3 = ‘name3’
def print1(self):
print(self.name3) #正確,沒有定義執行個體的變數。self指向類的變數。
print(self.name1) #正確,沒有定義類的成員變數,self指向父類的成員變數
37、執行系統命令
(1)import os
os.system(“command”)
僅僅在一個子終端運行系統命令,而不能擷取命令執行後的返回資訊
(2)os.popen()
tmp = os.popen(‘ls *.sh‘).readlines()
該方法不但執行命令還返回執行後的資訊對象。好處在於:將返回的結果賦於一變數,便於程式的處理
(3)使用模組subprocess
import subprocess
p = subprocess.Popen(‘ls *.sh‘, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print p.stdout.readlines()
for line in p.stdout.readlines():
print line,
retval = p.wait()
好處在於:運用對線程的控制和監控,將返回的結果賦於一變數,便於程式的處理。
當執行命令的參數或者返回中包含了中文文字,那麼建議使用subprocess,如果使用os.popen則會出現錯誤
python學習筆記(四)