[原创][连载]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
推荐阅读
为什么Python使用者远远大于perl
python是预编译然后从pypi上下载 python(pip)将package下载到本地 然后解压后将package内容安装到不同的指定目录
德熀阅读 255
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...
白鲸鱼赞 9阅读 5.4k
滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?
良许赞 3阅读 1.6k
搭个ChatGPT算法模型,从哪开始?
最近 ChatGPT 很火,火到了各行各业。记得去年更多的还是码农最新体验后拿它搜代码,现在各行各业都进来体验,问它咋理财、怎么写报告和给小孩起名。😂 也因此让小傅哥在头条的一篇关于 ChatGPT 的文章都有了26万...
小傅哥赞 6阅读 1.4k
程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...
良许赞 3阅读 1.3k
PyCharm 激活破解教程, 2023 年 2 月亲测有用
本文分享一下PyCharm 2022.2.3 版本最新激活破解教程,注意不要使用太新的版本,都是 Jetbrains 产品,本文专门配上了 Pycharm 的图片,跟着下面教程一步一步来即可。
程序员徐公阅读 11.1k评论 1
Ubuntu20.04 从源代码编译安装 python3.10
Ubuntu 22.04 Release DateUbuntu 22.04 Jammy Jellyfish is scheduled for release on April 21, 2022If you’re ready to use Ubuntu 22.04 Jammy Jellyfish, you can either upgrade your current Ubuntu syste...
ponponon赞 1阅读 4.6k评论 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。