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