Python、C#和Matlab基礎語法對比(五)注意事項

前面的博客介紹了Python、C#和Matlab的基礎語法對比,接下來將介紹一些語法的注意事項,目前能想起的不多,也可能有錯誤,歡迎大家指正和提出新的注意事項,或者常用的語法功能。

C#注意事項

對象(Object)類型
對象(Object)類型 是 C# 通用類型系統(Common Type System - CTS)中所有數據類型的終極基類。
Object 數據類型可以指向任意數據類型的數據,包括您的應用程序識別的任意對象實例。當您在編譯時不知道變量可能指向哪種數據類型時,請使用 Object。Object 的默認值爲 Nothing(空引用)。
字符串@字符
C# string 字符串的前面可以加 @(稱作"逐字字符串")將轉義字符(\)當作普通字符對待
按引用傳遞參數
引用參數是一個對變量的內存位置的引用。在 C# 中,使用 ref 關鍵字聲明引用參數。
params 關鍵字
在使用數組作爲形參時,C# 提供了 params 關鍵字,使調用數組爲形參的方法時,既可以傳遞數組實參,也可以傳遞一組數組元素。
C# 中的構造函數
類的 構造函數 是類的一個特殊的成員函數,當創建類的新對象時執行。
構造函數的名稱與類的名稱完全相同,它沒有任何返回類型。
C#的繼承
繼承的語法:class 子類類名 : class 父類類名{ //子類類體 }
繼承的特點:子類擁有所有父類中所有的字段、屬性和方法
函數重載(overload)
在同一範圍內對相同函數名有多個定義, 方法名必須相同,參數列表必須不相同,返回值類型可以不相同。
方法重寫(override)
重寫:類的繼承時發生,在子類中重新定義父類中的方法,父類方法必須用virtual修飾,表示這個方法是虛方法,可以被重寫。否則不能被重寫。
方法覆蓋(new)
在子類中用 new 關鍵字修飾 定義的與父類中同名的方法,叫覆蓋。 父類方法不必使用virtual修飾。
異常處理

try{// 引起異常的語句}
catch( ExceptionName e1 ){// 錯誤處理代碼}
finally{// 要執行的語句}

python注意事項

python命令行運行腳本
在命令行模式下,輸入 python filename.py 可以運行 filename.py 文件
多行語句
如果語句太長,一行放不下 (超出了屏幕),那麼可以用反斜槓 ( \ ) 劃分爲多行
python中的多行字符串
使用三引號(’’'或""")可以指定一個多行字符串
is 與 == 區別
is 用於判斷兩個變量引用對象是否爲同一個,即判斷兩個變量是否是引用同一個內存地址
== 用於判斷引用變量的值是否相等
python的pass語句
pass 是空語句,不做任何事情,只用作佔位語句
print() 函數中的 end 參數
參數 end 用於追加一些字符串到每次輸出的末尾,默認值爲 \n,可以設置 end=" " 將循環中的結果輸出到一行,每次輸出用空格分開
python 函數的參數傳遞
不可變類型: 對於不可變類型,如 整數、字符串、元組,fun(a),傳遞的只是 a 的值,沒有影響 a 對象本身,如果在 fun(a) 內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身
可變類型: 對於可變類型,如 列表,字典,fun(li) ,則是將 li 真正的傳過去,修改後 fun 外部的 li 也會受影響
變量作用域
Python 中只有模塊 (module),類 (class ) 以及函數 (def、lambda) 纔會引入新的作用域,其它的代碼塊 ( 如 if/elif/else/、try/except、for/while等 ) 是不會引入新的作用域的,也就是說這這些語句內定義的變量,外部也可以訪問
異常

try:
    statement(s)            # 要檢測的語句塊
except exception:
    deal_exception_code # 如果在 try 部份引發了 'exception' 異常
except :
    deal_all_other_exception2_code # 處理全部其它異常
else:
    no_exception_happend_code #如果沒有異常發生

切片可以設置步長
demo[索引:索引:步長] 切片得到新列表,間隔步長個元素取出元素
小數精度
python默認的是17位小數的精度,前16位是準確的,第17位開始不準確
詳情請見代碼之謎-浮點數
python創建二維列表

a=[]
for i in range(5):
    a.append([])
    for j in range(3):
        a[i].append(j)

或者

list_2d = [[0 for col in range(2)] for row in range(3)]

Python 函數可以返回多個值,多個值以元組的方式返回

def fun(a,b):    
    "返回多個值,結果以元組形式表示"
    return a,b,a+b

with表達式類似try-finally的簡寫形式

with open('2.txt') as f:
    print(f.read())

self代表類的實例,而非類
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。
在類的內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且爲第一個參數,self 代表的是類的實例。self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。
python的深拷貝、淺拷貝和賦值引用
直接賦值:其實就是對象的引用(別名)。
淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。
深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。

a=[1,2,[3]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a[2].append("%")
a[2] = ["$"]
print(a)
print(b)
print(c)
print(d)
# 打印結果
# [1, 2, ['$']]
# [1, 2, ['$']]
# [1, 2, [3, '%']]
# [1, 2, [3]]

matlab注意事項

管理命令
clc 清除命令窗口
clear 從內存中刪除變量
dir 列出當前目錄下的所有文件
MATLAB複數類型
複數是指既包含實部又包含虛部的數,虛部的單位是 -1 的開平方根,在 MATLAB 中用字母 i 或 j 中的一個表示,i 和 j 的作用是完全一樣的。
abs(c) 返回複數 c 的模
angle (c) 返回複數 c 的幅角
注意在循環的時候不要將複數的i和循環體的i混用
MATLAB ==和~=運算符注意事項
在 MATLAB 中用這兩個運算符比較兩個字符串是安全的,不會出現錯誤。但對兩個數字數據的比較,將可能產生意想不到的錯誤。兩個理論上相等的數不能有一絲一毫的差別,而在計算機計算的過程中出現了近似的現象,從而可能在判斷相等與不相等的過程中產生錯誤,這種錯誤稱爲 round off 錯誤
MATLAB數組元素的排序
MATLAB sort() 函數用來對數組元素進行排序
B = sort(A, dim, direction) %dim指定排序的維度,direction指定排序的方向
%dim=1(默認值)時按列排序,dim=2 時按行排序
%direction 爲 ‘ascend’ 時進行升序排序(默認),direction 爲 ‘descend’ 時進行降序排序。

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