Python學(xué)習(xí)筆記

最近在學(xué)習(xí)python,把學(xué)習(xí)的過(guò)程記錄下來(lái),方便以后查看

1. 學(xué)習(xí)資料

菜鳥(niǎo)教程
Python官網(wǎng)
Python論壇
廖學(xué)峰的官方網(wǎng)站

2. 開(kāi)發(fā)環(huán)境

因?yàn)樵趍ac上做開(kāi)發(fā),系統(tǒng)自帶了2.7的python版本。官網(wǎng)目前python最新版本為3.6.

2.x和3.x語(yǔ)法上有不同,既然剛開(kāi)始學(xué)習(xí),果斷入手3.6版本。
安裝完成后,現(xiàn)在系統(tǒng)中有兩個(gè)版本的python了。因此修改一下環(huán)境變量,在命令行中輸入vim ~/.bash_profile
在其中輸入以下兩行

alias p3="python3"
alias p2="python2"

保存退出,這樣在命令行中就可以輸入p2或者p3來(lái)打開(kāi)不同版本了

關(guān)于IDE的選擇,菜鳥(niǎo)教程上也介紹了幾種,最受推崇的應(yīng)該是PyCharm了.但因?yàn)槭鞘召M(fèi)版本,而且費(fèi)用不菲。自己也確實(shí)懶得去找破解版了,所以使用SublimeText3。
SublimeText是可以安裝插件的,然后將其打造成一個(gè)Python的開(kāi)發(fā)利器。插件的事情以后再研究了。

3.Pip包管理工具

安裝python時(shí)會(huì)自動(dòng)安裝pip
可以輸入以下命令查看pip版本

pip3 --version

使用方法
pip3 list --outdated 查看哪些包需要更新
pip3 install demjson安裝軟件包
pip3 install --upgrade SomePackage升級(jí)軟件包
pip3 uninstall SomePackage卸載軟件包
pip3 search SomePackage查找軟件包
pip3 show demjson查看軟件包詳情
pip3 list列出軟件包清單

4. 語(yǔ)法

第一個(gè)程序

#!/usr/local/bin/python3
#coding=utf-8
print("你好,世界");

在sublime中輸入上面三行代碼保存。在命令行中進(jìn)入到文件所在路徑。輸入

p3 hello.py

即可看到運(yùn)行結(jié)果。

代碼說(shuō)明:
代碼第一行表示可執(zhí)行文件所在路徑。因?yàn)楝F(xiàn)在使用的是python3,所以路徑為代碼中的地址。菜鳥(niǎo)教程中使用的仍是python2.x,因此教程上的路徑為#!/usr/bin/python。此行代碼作用是可以在路徑下直接用./來(lái)執(zhí)行文件
在命令行也可通過(guò)以下命令查看結(jié)果

chmod +x hello.py
./hello.py

代碼第二行表示文件編碼為utf-8,如果不寫(xiě)的話在顯示中文時(shí)會(huì)報(bào)錯(cuò)。

python標(biāo)識(shí)符

  • 所有標(biāo)識(shí)符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開(kāi)頭,區(qū)分大小寫(xiě);
  • 以下劃線開(kāi)頭的標(biāo)識(shí)符是有特殊意義的。以單下劃線開(kāi)頭(_foo)的代表不能直接訪問(wèn)的類屬性,需通過(guò)類提供的接口進(jìn)行訪問(wèn),不能用"from xxx import *"而導(dǎo)入;
  • 以雙下劃線開(kāi)頭的(__foo)代表類的私有成員;
  • 以雙下劃線開(kāi)頭和結(jié)尾的(__foo__)代表python里特殊方法專用的標(biāo)識(shí),如__init__() 代表類的構(gòu)造函數(shù)。

行和縮進(jìn)
Python的代碼塊不使用大括號(hào)來(lái)控制類,而是使用縮進(jìn)來(lái)控制

Python語(yǔ)句中一般以新行作為為語(yǔ)句的結(jié)束符。
可以使用斜杠( \)將一行的語(yǔ)句分為多行顯示

total = item_one + \
        item_two + \
        item_three

語(yǔ)句中包含[], {} 或 () 括號(hào)就不需要使用多行連接符

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

引號(hào)
Python 接收單引號(hào)( ' )、雙引號(hào)( " )、三引號(hào)( ''' 或 """ ) 來(lái)表示字符串,其中三引號(hào)可以由多行組成,編寫(xiě)多行文本的快捷語(yǔ)法

word = 'word'
sentence = "這是一個(gè)句子。"
paragraph = """這是一個(gè)段落。
包含了多個(gè)語(yǔ)句"""

注釋

# 第一個(gè)注釋
'''
這是多行注釋,使用單引號(hào)。
這是多行注釋,使用單引號(hào)。
這是多行注釋,使用單引號(hào)。
'''

"""
這是多行注釋,使用雙引號(hào)。
這是多行注釋,使用雙引號(hào)。
這是多行注釋,使用雙引號(hào)。
"""

等待用戶輸入
下面的程序在按回車鍵后就會(huì)等待用戶輸入."\n"在結(jié)果輸出前會(huì)輸出一個(gè)新的空行。一旦用戶按下 enter(回車) 鍵退出,其它鍵顯示

#!/usr/local/bin/python3
#coding=utf-8
print("你好,世界");
text = input("\nPress the enter key to exit.\n")
print("output:" + text)

數(shù)據(jù)類型
Python支持以下五中基本數(shù)據(jù)類型:

  • Numbers(數(shù)字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)
  • Set(集合)

字符串

s="1234567890"

可以通過(guò)下標(biāo)來(lái)截取字符串 p[頭下標(biāo):尾下標(biāo)]

p=s[1:5]
print(p)
//p的結(jié)果是  2345

“+”是連字符,“*”是重復(fù)符號(hào)

#!/usr/local/bin/python3
#coding=utf-8
str = 'Hello World!'

print(str)           # 輸出完整字符串
print(str[0])        # 輸出字符串中的第一個(gè)字符
print(str[2:5])      # 輸出字符串中第三個(gè)至第五個(gè)之間的字符串
print(str[2:])       # 輸出從第三個(gè)字符開(kāi)始的字符串
print(str * 2)       # 輸出字符串兩次
print(str + "TEST")  # 輸出連接的字符串

輸出結(jié)果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Python列表(List)

#!/usr/local/bin/python3
#coding=utf-8

list = [ 'runoob',786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print(list)               # 輸出完整列表
print(list[0])            # 輸出列表的第一個(gè)元素
print(list[1:3])          # 輸出第二個(gè)至第三個(gè)的元素 
print(list[2:])           # 輸出從第三個(gè)開(kāi)始至列表末尾的所有元素
print(tinylist * 2)       # 輸出列表兩次
print(list + tinylist)    # 打印組合的列表

以上輸出結(jié)果:
['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']

del刪除元素

list1 = ['physics', 'chemistry', 1997, 2000];

print(list1)
del list1[2];
print("After deleting value at index 2 : ")
print(list1)

輸出結(jié)果:
['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 : 
['physics', 'chemistry', 2000]

Python元組(Tuple)

元組是另一個(gè)數(shù)據(jù)類型,類似于List(列表)。
元組用"()"標(biāo)識(shí)。內(nèi)部元素用逗號(hào)隔開(kāi)。但是元組不能二次賦值,相當(dāng)于只讀列表。

#!/usr/local/bin/python3
#coding=utf-8

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
 
print(tuple)               # 輸出完整元組
print(tuple[0])            # 輸出元組的第一個(gè)元素
print(tuple[1:3])          # 輸出第二個(gè)至第三個(gè)的元素 
print(tuple[2:])           # 輸出從第三個(gè)開(kāi)始至列表末尾的所有元素
print(tinytuple * 2)       # 輸出元組兩次
print(tuple + tinytuple)   # 打印組合的元組

輸出結(jié)果:
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

Python字典(Dictionary)

#!/usr/local/bin/python3
#coding=utf-8

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
 
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print(dict['one'])          # 輸出鍵為'one' 的值
print(dict[2])              # 輸出鍵為 2 的值
print(tinydict)             # 輸出完整的字典
print(tinydict.keys())      # 輸出所有鍵
print(tinydict.values())    # 輸出所有值

輸出結(jié)果為:
This is one
This is two
{'name': 'john', 'code': 6734, 'dept': 'sales'}
dict_keys(['name', 'code', 'dept'])
dict_values(['john', 6734, 'sales'])

Python集合(Set)

set和dict類似,也是一組key的集合,但不存儲(chǔ)value。由于key不能重復(fù),所以,在set中,沒(méi)有重復(fù)的key

s = set([1, 1, 2, 2, 3, 3])
print(s)
s.add(4)
print(s)
s.add(4)
print(s)
s.remove(4)
print(s)

輸出結(jié)果:
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4}
{1, 2, 3}

Python運(yùn)算符

運(yùn)算符 描述 實(shí)例
** 返回x的y次冪 a**b 為10的20次方, 輸出結(jié)果 100000000000000000000
// 取整除 返回商的整數(shù)部分 9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0
and x and y 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計(jì)算值。 (a and b) 返回 20。
or x or y 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計(jì)算值。 (a or b) 返回 10。
not not x 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False
in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒(méi)有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
is is是判斷兩個(gè)標(biāo)識(shí)符是不是引用自一個(gè)對(duì)象 x is y, 如果 id(x) 等于 id(y) , is 返回結(jié)果 1
is not is not是判斷兩個(gè)標(biāo)識(shí)符是不是引用自不同對(duì)象 x is not y, 如果 id(x) 不等于 id(y). is not 返回結(jié)果 1

if語(yǔ)句

#!/usr/local/bin/python3
#coding=utf-8

num = 5     
if num == 3:            # 判斷num的值
    print('boss')        
elif num == 2:
    print('user')
elif num == 1:
    print('worker')
elif num < 0:           # 值小于零時(shí)輸出
    print('error')
else:
    print('roadman')     # 條件均不成立時(shí)輸出

while語(yǔ)句

i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非雙數(shù)時(shí)跳過(guò)輸出
        continue
    print(i)         # 輸出雙數(shù)2、4、6、8、10

i = 1
while 1:            # 循環(huán)條件為1必定成立
    print(i)         # 輸出1~10
    i += 1
    if i > 10:     # 當(dāng)i大于10時(shí)跳出循環(huán)
        break

while...else語(yǔ)句和for...else語(yǔ)句

#!/usr/local/bin/python3
#coding=utf-8

count = 0
while count < 5:
   print(count, " is  less than 5")
   count = count + 1
else:
   print(count, " is not less than 5")

for循環(huán)

for letter in 'Python':     # 第一個(gè)實(shí)例
   print('當(dāng)前字母 :', letter)
 
fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # 第二個(gè)實(shí)例
   print('當(dāng)前字母 :', fruit)
 
print("Good bye!")

通過(guò)序列索引迭代

#!/usr/local/bin/python3
#coding=utf-8

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print('當(dāng)前水果 :', fruits[index])
 
print("Good bye!")

pass語(yǔ)句
pass 不做任何事情,一般用做占位語(yǔ)句。

#!/usr/local/bin/python3
#coding=utf-8

# 輸出 Python 的每個(gè)字母
for letter in 'Python':
   if letter == 'h':
      pass
      print('這是 pass 塊')
   print('當(dāng)前字母 :', letter)

print("Good bye!")

python轉(zhuǎn)義字符

轉(zhuǎn)義字符 描述
\(在行尾時(shí)) 續(xù)行符
\\ 反斜杠符號(hào)
' 單引號(hào)
" 雙引號(hào)
\a 響鈴
\b 退格(Backspace)
\e 轉(zhuǎn)義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁(yè)
\oyy 八進(jìn)制數(shù),yy代表的字符,例如:\o12代表?yè)Q行
\xyy 十六進(jìn)制數(shù),yy代表的字符,例如:\x0a代表?yè)Q行
\other 其它的字符以普通格式輸出

Python字符串格式化

print("My name is %s and weight is %d kg!" % ('Zara', 21) )
輸出:
My name is Zara and weight is 21 kg!

日期和時(shí)間

import time;  # 引入time模塊
#獲取當(dāng)前時(shí)間戳
ticks = time.time()
print("當(dāng)前時(shí)間戳為:", ticks)
#當(dāng)前時(shí)間戳為: 1486715050.71681

#獲取當(dāng)前時(shí)間
localtime = time.localtime(time.time())
print("本地時(shí)間為 :", localtime)
#本地時(shí)間為 : time.struct_time(tm_year=2017, tm_mon=2, tm_mday=10, tm_hour=16, tm_min=24, tm_sec=10, tm_wday=4, tm_yday=41, tm_isdst=0)

#獲取格式化的時(shí)間
localtime = time.asctime( time.localtime(time.time()) )
print("本地時(shí)間為 :", localtime)
#本地時(shí)間為 : Fri Feb 10 16:24:10 2017

# 格式化成2016-03-20 11:45:39形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) )
#2017-02-10 16:24:10

# 格式化成Sat Mar 28 22:24:24 2016形式
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) )
#Fri Feb 10 16:24:10 2017
  
# 將格式字符串轉(zhuǎn)換為時(shí)間戳
a = "Sat Mar 28 22:24:24 2016"
print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
#1459175064.0

元組時(shí)間
很多Python函數(shù)用一個(gè)元組裝起來(lái)的9組數(shù)字處理時(shí)間:

序號(hào) 字段 屬性
0 4位數(shù)年 tm_year 2008
1 tm_mon 1 到 12
2 tm_mday 1到31
3 小時(shí) tm_hour 0到23
4 分鐘 tm_min 0到59
5 tm_sec 0到61 (60或61 是閏秒)
6 一周的第幾日 tm_wday 0到6 (0是周一)
7 一年的第幾日 tm_yday 1到366 (儒略歷)
8 夏令時(shí) tm_isdst -1, 0, 1, -1是決定是否為夏令時(shí)的旗幟

獲取日歷

import calendar
cal = calendar.month(2017, 2)
print("以下輸出2017年2月份的日歷:")
print(cal)

輸出:
   February 2017
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28

函數(shù)
語(yǔ)法

def functionname( parameters ):
   "函數(shù)_文檔字符串"
   function_suite
   return [expression]
# 定義函數(shù)
def printme( str ):
   "打印任何傳入的字符串"
   print str;
   return;
 
# 調(diào)用函數(shù)
printme("我要調(diào)用用戶自定義函數(shù)!");
printme("再次調(diào)用同一函數(shù)");

所有參數(shù)(自變量)在Python里都是按引用傳遞。如果你在函數(shù)里修改了參數(shù),那么在調(diào)用這個(gè)函數(shù)的函數(shù)里,原始的參數(shù)也被改變了

關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)使用順序可以和函數(shù)參數(shù)聲明順序不一致

#可寫(xiě)函數(shù)說(shuō)明
def printinfo( name, age ):
   "打印任何傳入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#調(diào)用printinfo函數(shù)
printinfo("miki",50) #默認(rèn)參數(shù)調(diào)用
printinfo( age=50, name="miki" );#關(guān)鍵字參數(shù)調(diào)用

默認(rèn)參數(shù)

#可寫(xiě)函數(shù)說(shuō)明
def printinfo( name, age = 35 ):
   "打印任何傳入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#調(diào)用printinfo函數(shù)
printinfo( age=50, name="miki" );
printinfo( name="miki" );

不定長(zhǎng)參數(shù)

# 可寫(xiě)函數(shù)說(shuō)明
def printinfo( arg1, *vartuple ):
   "打印任何傳入的參數(shù)"
   print "輸出: "
   print arg1
   for var in vartuple:
      print var
   return;
 
# 調(diào)用printinfo 函數(shù)
printinfo( 10 );
printinfo( 70, 60, 50 );

匿名函數(shù)
使用lambda關(guān)鍵字來(lái)聲明匿名函數(shù)

# 可寫(xiě)函數(shù)說(shuō)明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 調(diào)用sum函數(shù)
print "相加后的值為 : ", sum( 10, 20 )
print "相加后的值為 : ", sum( 20, 20 )

可變參數(shù)
在參數(shù)前添加*,將不變參數(shù)變?yōu)榭勺儏?shù)

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

print(calc(1, 2))   #輸出5
print(calc())    #輸出0

nums = [1, 2, 3]
print(calc(nums[0], nums[1], nums[2]))
#或者
print(calc(*nums))
#輸出均為14

遞歸函數(shù)

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

當(dāng)執(zhí)行fact(1000)會(huì)發(fā)生棧溢出。

解決遞歸調(diào)用棧溢出的方法是通過(guò)尾遞歸優(yōu)化:尾遞歸是指,在函數(shù)返回的時(shí)候,調(diào)用自身本身,并且,return語(yǔ)句不能包含表達(dá)式。這樣,編譯器或者解釋器就可以把尾遞歸做優(yōu)化,使遞歸本身無(wú)論調(diào)用多少次,都只占用一個(gè)棧幀,不會(huì)出現(xiàn)棧溢出的情況。

代碼修改如下

def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)

Python 模塊
support.py

#!/usr/local/bin/python3
#coding=utf-8

def print_func( par ):
   print("Hello : ", par)
   return

hello.py

#!/usr/local/bin/python3
#coding=utf-8

# 導(dǎo)入模塊
import support
 
# 現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了
support.print_func("Zara")

定位模塊
當(dāng)導(dǎo)入一個(gè)模塊,Python對(duì)模塊位置的搜索順序是:

  1. 當(dāng)前目錄
  2. 如果不在當(dāng)前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個(gè)目錄。
  3. 如果都找不到,Python會(huì)察看默認(rèn)路徑。UNIX下,默認(rèn)路徑一般為/usr/local/lib/python/。

模塊搜索路徑存儲(chǔ)在system模塊的sys.path變量中。變量里包含當(dāng)前目錄,PYTHONPATH和由安裝過(guò)程決定的默認(rèn)目錄。

作為環(huán)境變量,PYTHONPATH由裝在一個(gè)列表里的許多目錄組成。PYTHONPATH的語(yǔ)法和shell變量PATH的一樣。

  • 在Windows系統(tǒng),典型的PYTHONPATH如下:
    set PYTHONPATH=c:\python20\lib;
  • 在UNIX系統(tǒng),典型的PYTHONPATH如下:
    set PYTHONPATH=/usr/local/lib/python

如果要給全局變量在一個(gè)函數(shù)里賦值,必須使用global語(yǔ)句。

文件內(nèi)容操作

#!/usr/local/bin/python3
#coding=utf-8

fo = open("foo.txt", "w+")
print("文件名: ", fo.name)
print("是否已關(guān)閉 : ", fo.closed)
print("訪問(wèn)模式 : ", fo.mode)
#print("末尾是否強(qiáng)制加空格 : ", fo.softspace)

fo.write("www.runoob.com!\nVery good site!");
fo.seek(0, 0);

str = fo.read(10);
print("fileContent:" + str)
fo.close()```

**文件目錄操作**

import os

重命名文件test1.txt到test2.txt。

os.rename( "test1.txt", "test2.txt" )

刪除一個(gè)已經(jīng)存在的文件test2.txt

os.remove("test2.txt")

創(chuàng)建目錄test

os.mkdir("testdir")

將當(dāng)前目錄改為"/home/newdir"

os.chdir("/home/newdir")

給出當(dāng)前的目錄

print(os.getcwd())

刪除”/tmp/test”目錄

os.rmdir( "/tmp/test" )

打開(kāi)文件,若文件不存在,則關(guān)閉文件 相當(dāng)于try...finally...

with open('/path/to/file', 'r') as f:
print(f.read())


**面向?qū)ο?*
類的聲明和調(diào)用.一般類是寫(xiě)在單獨(dú)的一個(gè)文件中

!/usr/local/bin/python3

coding=utf-8

class Employee:
'所有員工的基類'
empCount = 0

def init(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1

def displayCount(self):
print("Total Employee %d" % Employee.empCount)

def displayEmployee(self):
print("Name : ", self.name, ", Salary: ", self.salary)

def del(self):
print("析構(gòu)函數(shù)執(zhí)行")

"創(chuàng)建 Employee 類的第一個(gè)對(duì)象"
emp1 = Employee("Zara", 2000)
"創(chuàng)建 Employee 類的第二個(gè)對(duì)象"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)


**繼承**
python支持多重繼承

class A: # 定義類 A
.....

class B: # 定義類 B
.....

class C(A, B): # 繼承類 A 和 B
.....

你可以使用issubclass()或者isinstance()方法來(lái)檢測(cè)。
- issubclass() - 布爾函數(shù)判斷一個(gè)類是另一個(gè)類的子類或者子孫類,語(yǔ)法:issubclass(sub,sup)
- isinstance(obj, Class) 布爾函數(shù)如果obj是Class類的實(shí)例對(duì)象或者是一個(gè)Class子類的實(shí)例對(duì)象則返回true。

**分文件組織源碼**
firstClass.py

!/usr/local/bin/python3

coding=utf-8

class firstClass(object):
"""docstring for firstClass"""
def init(self, arg):
super(firstClass, self).init()
self.arg = arg

def printMe(self):
    print(__name__)
secondClass.py

!/usr/local/bin/python3

coding=utf-8

class secondClass(object):
"""docstring for secondClass"""
def init(self, arg):
super(secondClass, self).init()
self.arg = arg

def printMe(self):
    print(__name__)
hello.py

!/usr/local/bin/python3

coding=utf-8

import firstClass
import secondClass

class1 = firstClass.firstClass('a')
class2 = secondClass.secondClass('a')

class1.printMe()
class2.printMe()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進(jìn)階...
    健康哥哥閱讀 2,070評(píng)論 1 3
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的,另外根據(jù)自己平時(shí)的積累進(jìn)行修正...
    renyangfar閱讀 3,087評(píng)論 0 10
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程,做筆記總結(jié)一下重點(diǎn)。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,736評(píng)論 0 5
  • 要點(diǎn): 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個(gè)“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍?、屬性?..
    victorsungo閱讀 1,562評(píng)論 0 6
  • 第五章 函數(shù)和代碼復(fù)用 函數(shù)的基本使用 函數(shù)的定義 函數(shù)是一段具有特定功能的、可重用的語(yǔ)句組,用函數(shù)名來(lái)表示并通過(guò)...
    jplee閱讀 4,275評(píng)論 0 1