摘要:與的異同名詞方法與函數(shù)同義僅僅是語言規(guī)定差異在本文中不做區(qū)別都是指定義的處理過程的有返回值沒有返回值版之后出現(xiàn)的方法專指類中的函數(shù)的方法指無返回值的處理函數(shù)指有返回值的處理中的方法指無返回值的處理函數(shù)指有返回值的處理主模塊的判斷空代碼為保
nim與python的異同
名詞:方法與函數(shù)同義.僅僅是語言規(guī)定差異.在本文中不做區(qū)別.
1. python都是指def定義的處理過程 2. nim的 proc有返回值, func沒有返回值(0.19版之后出現(xiàn)) 3. c++的[方法(method)]專指類中的函數(shù). 4. pascal的方法(procedure)指無返回值的處理,函數(shù)(function)指有返回值的處理 5. c中的方法(function)指無返回值的處理,函數(shù)(function)指有返回值的處理主模塊的判斷
python
if __name__ == “__main__”: pass
nim
if isMainModule: discard空代碼-為保持縮進的占位符
python
pass
nim
discard
python用4個空格
nim用2個空格
文字串的格式化常用形式:python:
print “hello, %s!”%(“ world”) #python2
print(“hello, %s!”%(“ world”)) #python3
print(“hello, {}!”.format(“ world”)) #python3
print("hello, {0}! your name is {1}.".format(" world","rock")) #python3
nim也有類似用法:
echo(“hello, $1!” % “ world”)
或者不加括號也可以
echo “hello, $1!” % “ world”
echo "Hello, $2! your name is $1." % ["rock","world"] #輸出順序變化了
nim里文字串的操作符%不是默認操作符,需要在使用前引入strutils包.否則不能使用,在編譯時會報錯.方法調(diào)用:
import strutils
這樣就會給為文字串增加很多功能, 比如上面的%操作符
python是傳統(tǒng)的[對象.方法]調(diào)用寫法
nim 既可以用傳統(tǒng)OOP風格的[對象.方法],也可以用[方法(對象)/方法 對象]調(diào)用,這被稱為UFCS(Uniform Function Call Syntax-通用方法調(diào)用語法).后一種風格類似C或pascal等命令/指令編程語言,兩者效力與結(jié)果相同, 比較靈活.
UFCS
要求方法(proc)或函數(shù)(func)的第一個參數(shù)是要操作的類型.
proc len2(value:string):int = 處理過程省略 let a = “” #a的類型自動推導. 等同于 let a:string = "" len2(a) == a.len2 #nim可以不寫函數(shù)調(diào)用的括號
類的方法(proc/func/method)要求第一個參數(shù)是類的類型.
python
class Person: def makelove(self, spouse)→Person: # python3寫法 省略 person = Person() baby = person.makelove(spouse)
nim
type Person = object proc makelove(self:Person, spouse:Spouse):Person = 省略 person = Person() baby = person.makelove(spouse) #或者 baby = makelove(person)模塊導入
python
import os
os.exists(“./testfile”)
from os import *
導入該模塊下的所有內(nèi)容
exists(“.testfile”) # 這里使用os模塊內(nèi)的函數(shù)[exists]不需要加上模塊名前綴
import json as jn #將模塊引入后起個別名使用
from os import path
from os import path as syspath
nim
from os import nil #等同于python的[import os].這里不導入模塊內(nèi)的內(nèi)容,而只是將模塊本身導入.
os.existsFile(“./testfile”)如果不加上[import nil]那么默認是導入該模塊下的所有內(nèi)容,而不需要在調(diào)用之前加上模塊名
import os
import os # 這里導入os模塊
existsFile(“.testfile”) # 這里直接使用os模塊內(nèi)的函數(shù)[existsFile].
等同于python的[from os import *]
import parseutils as pu import nil #將模塊引入后起個別名使用
from os import existsFile
from os import existsFile as exfile
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44806.html
摘要:變量常量綁定無特定關(guān)鍵字直接設(shè)值將一個文字列放到名為的變量里的類型由文字列上面定義的正則表達式變成了整數(shù)這里就帶來一個在大工程里很容易帶來困擾的問題理解代碼不得不受制于類型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與 變量(常量)綁定 python無特定關(guān)鍵字,直接設(shè)值a = r^s*(d{4}-d{2}-d{2})s{1,2}(.+)$ # 將一個文字列放到名為a的...
摘要:方法重載不支持支持和類似基本類型轉(zhuǎn)換整數(shù)文字列使用整數(shù)內(nèi)置方法由引入使用進行格式化由引入操作符可選格式文字列沒有格式文字列共位小數(shù)位位右對齊進行格式化 overload(方法重載) python 不支持 nim 支持.和c++類似 基本類型轉(zhuǎn)換 整數(shù) → 文字列 使用整數(shù)(int/int8/int16/int32/64/uint/uint8/uint16/uint32/...
摘要:與的特點比較這兩個目前都是小眾語言做了些時間的研究寫了點東西有了點心得相似點有衛(wèi)生宏區(qū)別與的不衛(wèi)生宏在類或定義體之外定義函數(shù)代碼沒有分成頭與實現(xiàn)體例如的頭與實現(xiàn)的與定義的接口定義與實現(xiàn)定義是分開的而與是不分開的運用函數(shù)式編程高階函數(shù)目前是新 nim與rust的特點比較 這兩個目前都是小眾語言,做了些時間的研究,寫了點東西有了點心得 相似點: 有衛(wèi)生宏.區(qū)別與C++的(不衛(wèi)生)宏 在類...
閱讀 2516·2021-11-15 11:36
閱讀 1260·2019-08-30 15:56
閱讀 2313·2019-08-30 15:53
閱讀 1104·2019-08-30 15:44
閱讀 715·2019-08-30 14:13
閱讀 1052·2019-08-30 10:58
閱讀 542·2019-08-29 15:35
閱讀 1370·2019-08-29 13:58