pascal和python的区别_[原创][连载]nim与python的异同1

nim与python的异同

名词:方法与函数同义.仅仅是语言规定差异.在本文中不做区别.

1. python都是指def定义的处理过程

2. nim的 proc有返回值, func没有返回值(0.19版之后出现)

3. c++的[方法(method)]专指类中的函数.

4. pascal的方法(procedure)指无返回值的处理,函数(function)指有返回值的处理

5. c中的方法(function)指无返回值的处理,函数(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包.否则不能使用,在编译时会报错.

import strutils

这样就会给为文字串增加很多功能, 比如上面的%操作符

方法调用:

python是传统的[对象.方法]调用写法

nim 既可以用传统OOP风格的[对象.方法],也可以用[方法(对象)/方法 对象]调用,这被称为UFCS(Uniform Function Call Syntax-通用方法调用语法).后一种风格类似C或pascal等命令/指令编程语言,两者效力与结果相同, 比较灵活.

UFCS

要求方法(proc)或函数(func)的第一个参数是要操作的类型.

proc len2(value:string):int =

处理过程省略

let a = “” #a的类型自动推导. 等同于 let a:string = ""

len2(a) == a.len2 #nim可以不写函数调用的括号

类的方法(proc/func/method)要求第一个参数是类的类型.

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 *

导入该模块下的所有内容

exists(“.testfile”) # 这里使用os模块内的函数[exists]不需要加上模块名前缀

import json as jn #将模块引入后起个别名使用

from os import path

from os import path as syspath

nim

from os import nil #等同于python的[import os].这里不导入模块内的内容,而只是将模块本身导入.

os.existsFile(“./testfile”)

如果不加上[import nil]那么默认是导入该模块下的所有内容,而不需要在调用之前加上模块名

import os

import os # 这里导入os模块

existsFile(“.testfile”) # 这里直接使用os模块内的函数[existsFile].

等同于python的[from os import *]

import parseutils as pu import nil #将模块引入后起个别名使用

from os import existsFile

from os import existsFile as exfile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值