發表文章

目前顯示的是 5月, 2019的文章

python 變數 II

有時候我們在多個不同的class之間使用了同一個模組。而模組中有些變數,我們希望其可以跟著變動。 我們舉個例子來看看 第一個檔案 vv.py import os, sys class vv(): vva = 1 vvb = 2 第二個檔案 v1.py import vv class v1(): def __init__(self): self.aa = vv.vv()                 self.aa.vva=9999 def show(self): print self.aa.vva print self.aa.vvb 第三個檔案為主程式 vmain.py import vv import v1 class main(): def __init__(self): self.a = v.vv() def show(self): print self.a.vva print self.a.vvb def change(self): self.a.vva=12345 self.a.vvb=54321 def gotV1(self): aa = v1.v1() aa.show()      if __name__ == '__main__': aa=main() aa.show() aa.change() aa.show() aa.gotV1() print " new object " bb = main() bb.show() 當我們執行了vmain.py 得到 1 2 12345 54321 9999 2  new object  1 2 我們企圖在change中改變vva的數字,。這個合理,每一個新的物件,都該保有其參數原來的值。如果我們希望new object下,新物件的值也一起被改變呢? import vv import

python aubio 安裝

圖片
在window 10,以pip 安裝 aubio時出現如下的錯誤。這是安裝環境的問題。 Running "pkg-config --libs --cflags libavformat" failed: WindowsError(2, 'The system cannot find the file specified') Running "pkg-config --libs --cflags libavutil" failed: WindowsError(2, 'The system cannot find the file specified') Running "pkg-config --libs --cflags libavresample" failed: WindowsError(2, 'The system cannot find the file specified') Running "pkg-config --libs --cflags jack" failed: WindowsError(2, 'The system cannot find the file specified') Running "pkg-config --libs --cflags sndfile" failed: WindowsError(2, 'The system cannot find the file specified') Running "pkg-config --libs --cflags samplerate" failed: WindowsError(2, 'The system cannot 我們要為 widnow 環境安裝上 visual C++, 如下說明 https://wiki.python.org/moin/WindowsCompilers 在安裝前,我們先確定setup tool為新的 pip install --upgrade setuptools 針對自己的python選Visual C++ 在連結中

Python global variable

def g():     var =1     print var var = 10 print var g() print var  答案為 >>>  10 1 10 >>>  這個很容易理解,本來g()裡面的參數就不會跟外面的混為一談。 def g():     print var var = 10 print var g() print var  答案為 >>>  10 10 10 >>>  超有趣,g()中的var,居然直接找到外面的var。 def g():     print var global var var = 10 print var g() print var  答案為 >>>  10 10 10 >>>  多宣告global,跟上一種寫法一樣。好像內定就以為是global def g():     var = 1     print var global var var = 10 print var g() print var  答案為 >>>  10 1 10 >>>  g()中多了var = 1怎麼又認為不是外部的var了呢?外部var明明有宣告為 global了。這樣就可理解,上兩種寫法,因為沒有在 g()中給定 var 一個值。所以python 認為g()裡面的var與外面的是一樣的。所以給一個值,python會做出新變數。這樣我們可以推論,如果有沒新宣告為global不能給值。 >>> global v = 1 SyntaxError: invalid syntax 沒錯,改成 global v #先宣告是global v = 1 嗯… def g():     global var     var =1     print var var = 10

python 繼承

import ttk import re import os, sys class Computer(): keyboard = "bluetooth" mouse = "bluetooth" def __init__(self, keyboard = "wire", mouse = "wire"): self.keyboard = keyboard self.mouse = mouse def getKeyboard(self): print "keyboard is " + self.keyboard def getMouse(self): print "mouse is " + self.mouse def changeKeyboard(self, keyboard): self.keyboard = self.keyboard + "-" + keyboard print self.keyboard class Server(Computer): interface = "scsi" harddisk = "SD" def __init__(self, keyboard="wire", mouse = "wire", interface = "ide", harddisk = "drive"): Computer.__init__(self, keyboard, mouse) #這裡在python 3要改成 super().__init__(keyboard, mouse) self.interface = interface self.harddisk = harddisk def chang

tkinter check button

先宣個一個參數的物件 varB = tk.BooleanVar() set  初始值 varB.set(True) 給 check button 設定 var 參數 ckBtn = tk.Checkbutton(root, text="I am a check button",var=varB) ckBtn.grid(row=0, column =  0) 想要得到參數 ckBtn.get() 如 if  ckBtn.get() is True:     print "I am true" 也可以把參數換成String varB = tk. StringVar() 給 check button 設定 var 參數 ckBtn = tk.Checkbutton(root, text="i am a check button", var=varB, onvalue="yes", offvalue="no") 想要得到參數  ckBtn.get() 如 if  ckBtn.get() == "yes":         print "I am yes"